如果我有一个结构:
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
。幸运的是,这些通常可以用相同的方式推导出来。
关于collections - 如何通过结构相等检查结构集合中的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391559/