При использовании 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()
?