什么是逐个元素地比较2个向量或字符串的最佳方法?

时间:2015-04-08 01:51:47

标签: rust

什么是在Rust中逐个元素地比较2个向量或字符串的最佳方法,同时能够对每对元素进行处理?例如,如果您想要计算不同元素的数量。这就是我正在使用的:

let mut diff_count: i32 = 0i32;
for (x, y) in a.chars().zip(b.chars()) {
    if x != y {
        diff_count += 1i32;
    }
}

这是正确的方法还是有更规范的东西?

2 个答案:

答案 0 :(得分:12)

为了获得匹配元素的数量,我可能会使用filtercount

fn main() {
    let a = "Hello";
    let b = "World";

    let matching = a.chars().zip(b.chars()).filter(|&(a, b)| a == b).count();
    println!("{}", matching);

    let a = [1,2,3,4,5];
    let b = [1,1,3,3,5];

    let matching = a.iter().zip(b.iter()).filter(|&(a, b)| a == b).count();
    println!("{}", matching);
}

答案 1 :(得分:0)

如果您想使用@Shepmaster's answer作为要在单元测试中使用的断言的基础,请尝试以下操作:

In [29]: parsed.findAll("a", {"class": "lecturer"})                                
Out[29]: []

当然,在浮子上使用时要小心!那些讨厌的NaN不会比较,您可能需要使用公差来比较其他值。并且您可能想通过告诉第一个不匹配值的索引来使其花哨。