通过Eq特征对图元进行相等比较

时间:2019-09-30 19:21:56

标签: rust

我有一个结构,最终我希望能够通过哈希访问此结构的字段,以便将各个字段的相等性与同一设置的其他实例进行比较。

Eq特性的文档似乎说Eq是为原始类型(u8i16等)实现的。我的目标是在地图中存储对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引用,并将其与另一个进行比较。

0 个答案:

没有答案