Я хочу вектор для элементов, которые содержат черту, такую как Eq
, и мне нужны гетерогенные векторы. Например:Возможно ли иметь гетерогенный вектор типов, которые реализуют Eq?
let mut x: Vec<Eq> = Vec::new();
x.push(1);
x.push("hello")
Я получаю сообщение об ошибке, которое говорит, что Eq
не может быть превращена в объект:
error[E0038]: the trait `std::cmp::Eq` cannot be made into an object
--> src/main.rs:2:20
|
2 | let mut x: Vec<Eq> = Vec::new();
| ^^ the trait `std::cmp::Eq` cannot be made into an object
|
= note: the trait cannot use `Self` as a type parameter in the supertrait listing
Можно ли получить список указателей на вещи, которые я могу сравнить, независимо от их типы?
Если вы счастливы использовать 'Any' черту вместо' Eq' специально, 'VEC> 'works ([linkground link] (https://play.rust-lang.org/?gist=22fcc82ccea3f0b0aa0f3528f23d35a6&version=stable&backtrace=0)). –
Aurora0001
Спасибо, но мне действительно нужно иметь возможность сравнивать вещи в векторе. В частности, большая проблема заключается в том, что я хотел бы иметь HashMap с гетерогенными ключами. – FCo