首页 > 解决方案 > 参考参考 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 的元素是对引用的引用)

标签: rust

解决方案


&'a Vec 的 IntoIterator 实现正在返回&T.

filter的谓词定义为where P: FnMut(&I::Item) -> bool。它引用迭代器的项目,因此是双重引用。


推荐阅读