我想得到一个条件为真的数组中的元素.例如我想要数组元素为0的所有索引:
fn main() {
let lim = 10;
let mut sieve = vec![0; lim + 1];
sieve[1] = 1;
println!(
"{:?}",
sieve
.iter()
.enumerate()
.filter(|&(_, c)| c != 0)
.map(|(i, _)| i)
.collect::<Vec<usize>>()
);
}
但这是一个编译错误:
error[E0277]: can't compare `&{integer}` with `{integer}`
--> src/main.rs:10:33
|
10 | .filter(|&(_, c)| c != 0)
| ^^ no implementation for `&{integer} == {integer}`
|
= help: the trait `std::cmp::PartialEq<{integer}>` is not implemented for `&{integer}`
当我使用c.clone() != 0
的时候,它就工作了.
如果我正确理解了错误消息,Rust会抱怨它无法将borrow 与整数与整数进行比较.我不明白为什么不可能.