У меня есть структура, и в конечном итоге я бы хотел иметь возможность доступа к полям этой структуры через хеш для сравнения равенства отдельных полей с другими экземплярами той же установки.
документация для черты 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"]
Возможно?
Я считаю Как проверить на равенство междуобъекты-черты? на самом деле не одно и то же, потому что они проверяют равенство между перечислениями. Я хотел бы иметь возможность взять ссылку Eq
на примитивный тип (например, u16
и т. Д.) И сравнить его с другим.