如果我有一个结构:
pub struct Test {
val1: u8,
val2: u8,
}
我将这些代码制作为
vec!
:let a = Test{val1: 1, val2: 1};
let b = Test{val1: 1, val2: 2};
let c = Test{val1: 1, val2: 2};
let my_vec = vec![a, b];
如何判断
my_vec
是否包含与c值相同的结构? 最佳答案
Vec
有一个方法contains
,用于检查它是否包含特定值。该方法要求元素实现PartialEq
,您可以像这样自动得出:
#[derive(PartialEq)]
pub struct Test {
val1: u8,
val2: u8,
}
现在,您可以执行以下操作:
assert!(my_vec.contains(&c));
如果您的集合很大,这将是非常低效的,因为它必须与每个元素进行比较,直到找到匹配的元素为止。
HashSet
会更有效,但是有它自己的要求,即您也需要实现Eq
和Hash
。幸运的是,这些通常可以以相同的方式导出。