collections - 如何通过结构相等检查结构集合中的结构?

标签 collections rust traits equality

如果我有一个结构:

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。幸运的是,这些通常可以用相同的方式推导出来。

关于collections - 如何通过结构相等检查结构集合中的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391559/

相关文章:

PHP 类使用与特征函数相同的名称

java - 多个集合的并行迭代

java - 我应该避免使用从 Java 8 开始的迭代器吗?它们还有适当的用途吗?

rust - Rust 语法 `if let [.., last] = self ...` 是什么意思?

sorting - 如何检查切片是否已排序?

rust - 如何将任意就地操作应用于 &mut 引用?

php - 如何使用特征 - Laravel 5.2

Play 2.4 中特征的 Json 格式化程序

java - MultiKeyMap 中元素的顺序

collections - Groovy 有集合的 size 属性吗?