我有一个结构,最终我希望能够通过哈希访问此结构的字段,以便将各个字段的相等性与同一设置的其他实例进行比较。
Eq
特性的文档似乎说Eq
是为原始类型(u8
,i16
等)实现的。我的目标是在地图中存储对Eq
的引用,然后通过它们进行相等比较。
struct User {
id: u32,
age: u8,
fingers: u8,
toes: u8,
}
let u1 = User { id: 1234, age: 42, fingers: 10, toes: 10 };
let u2 = User { id: 5678, age: 41, fingers: 10, toes: 10 };
let mut umap1: HashMap<String, &dyn Eq> = HashMap::new();
// ^^^^^^^ - Wrong... but I don't know if this is even possible.
我想做的是将类似以下内容的内容插入到哈希表中:
umap1["id"] = &u1.id
umap1["age"] = &u1.age
然后我可以再进行一次哈希(umap2
)并执行以下操作:
if umap1["id"] == umap2["id"]
可能吗?
我相信How to test for equality between trait objects?并不是一回事,因为它测试枚举之间的相等性。我希望能够对原始类型(例如Eq
等)进行u16
引用,并将其与另一个进行比较。