types - 如何为包含具有可变引用的函数签名的类型实现 PartialEq?
问题描述
在我的小型玩具语言解释器中,我有一个表示值的枚举:
#[derive(PartialEq)]
pub enum LangValue {
Number(f64),
String(String),
// etc. etc.
NativeFunction(FunctionMapping),
}
该NativeFunction
类型与从语言中调用 Rust 函数相关:
pub type NativeFuncSignature = fn(Vec<LangValue>) -> LangValue;
#[derive(PartialEq)]
pub struct NativeMapping {
pub name: String,
pub arg_count: usize,
pub func: NativeFuncSignature,
}
我发现自己需要将NativeFuncSignature
可变引用传递给控制语言中变量的结构,如下所示:
pub type NativeFuncSignature = fn(Vec<LangValue>, &mut Variables) -> LangValue;
PartialEq
这使for的派生失败NativeMapping
,但它是必需的,因为LangValue
派生自PartialEq
for 检查语言中的两个值是否相同(数字、字符串等)。值得注意的是,我并不在意NativeFunction
s 之间的比较是否准确,但它必须满足PartialEq
才能LangValue
做到。
如何&mut
在函数签名中传递引用,同时使其符合PartialEq
?
解决方案
推荐阅读
- python - 是否可以通过使用具有有效属性名称的变量来调用类属性?
- javafx - JavaFX:无法动态将 ImageViews 添加到锚窗格
- vue.js - 在 Vue 中使用 SASS 中的变量来样式化组件和文件 scss
- python - 出现错误:模块“pdfkit”没有属性“配置”
- shell - 使用 jq 基于公共键值对合并两个 JSON 文件
- elasticsearch - Elasticsearch 到 BigQuery 管道部署在云数据融合实例上失败
- tibble - 如何在单列标题的开头插入一个值
- python - 错误:张量板 2.0.2 要求 setuptools>=41.0.0,但您将拥有不兼容的 setuptools 40.6.2
- google-bigquery - bigquery 命令按位置拆分列
- json - 将列表转换为字典 - 更新了我的问题