参考铁锈

时间:2019-07-15 10:46:27

标签: rust

fn count_occur(v: &Vec<i32>, val: i32) -> usize {
    v.into_iter().filter(|&&x| x == val).count()
}

fn main() -> () {
    let v1 : Vec<i32> = vec![1,2,3, 4,5,6];
    for &item in &v1 {
        count_occur(&v1, item);
    }  
}

有人可以向我解释为什么lambda需要使用&&x(我的意思是为什么需要双重引用-我看不到为什么传递给lambda的元素是对引用的引用)

1 个答案:

答案 0 :(得分:0)

IntoIterator implementation for &'a Vec返回&T的项目。

filter's predicate被定义为where P: FnMut(&I::Item) -> bool。它引用了迭代器的项目,因此引用了双重引用。