【发布时间】:2019-07-15 10:46:27
【问题描述】:
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-lang.github.io/rust-clippy/master/index.html#unused_unit -
这里有一个在副本中没有涉及的转折——
into_iter()方法的分辨率。IntoIterator对&Vec<T>有一个单独的实现,它在向量上调用iter(),因此项目类型为&T。
标签: rust