使用filter
时,您会收到引用,因为filter
does not return ownership。但是iter()
已经引用了您正在迭代的内容,因此您获得的代码如下所示:
fn main() {
let mut vec: Vec<(bool, i32)> = Vec::new();
vec.push((true, 1));
vec.push((false, 2));
vec.push((true, 3));
for &(_, x) in vec.iter().filter(|&&(exists, _)| exists) {
println!("{}", x);
}
}
这对我来说似乎很多&
。这被认为是实施filter()
的惯用方法吗?