Сравнение равенства примитивов через черту Eq - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть структура, и в конечном итоге я бы хотел иметь возможность доступа к полям этой структуры через хеш для сравнения равенства отдельных полей с другими экземплярами той же установки.

документация для черты 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 и т. Д.) И сравнить его с другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...