Rob*_*Rob 1 collections equality traits rust
如果我有一个结构:
pub struct Test {
val1: u8,
val2: u8,
}
Run Code Online (Sandbox Code Playgroud)
我做了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];
Run Code Online (Sandbox Code Playgroud)
如何判断是否my_vec包含与 c 具有相同值的结构?
Vec有一个方法,contains用于检查它是否包含特定值。该方法要求元素实现PartialEq,您可以像这样自动派生:
#[derive(PartialEq)]
pub struct Test {
val1: u8,
val2: u8,
}
Run Code Online (Sandbox Code Playgroud)
所以现在你可以这样做:
assert!(my_vec.contains(&c));
Run Code Online (Sandbox Code Playgroud)
如果您的集合变得很大,这将非常低效,因为它必须与每个元素进行比较,直到找到匹配的元素。AHashSet会更有效,但也有它自己的要求,您也需要Eq实现Hash。幸运的是,这些通常可以通过相同的方式导出。
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |