如果我有一个结构:

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会更有效,但是有它自己的要求,即您也需要实现EqHash。幸运的是,这些通常可以以相同的方式导出。

10-08 10:56
查看更多