Rust 如何在检查其他元素时惯用地迭代可变向量

Rust 如何在检查其他元素时惯用地迭代可变向量,rust,Rust,我想写这样的代码: let mut v: Vec<Object> = Vec::new(); for e in v.iter_mut() { if e.some_predicate() { e.val = v.iter().filter(|o| o.some_predicate()).count(); } } rust中的惯用方法是什么?在这种情况下,我认为使用索引是编写它的惯用方法。答案很可能是@user4815162342所说的。可能会有一个“更好”的答案,但这

我想写这样的代码:

let mut v: Vec<Object> = Vec::new();
for e in v.iter_mut() {
  if e.some_predicate() {
    e.val = v.iter().filter(|o| o.some_predicate()).count();
  }
}

rust中的惯用方法是什么?

在这种情况下,我认为使用索引是编写它的惯用方法。答案很可能是@user4815162342所说的。可能会有一个“更好”的答案,但这完全取决于谓词是什么。
let mut v: Vec<Object> = Vec::new();
for i in 0..v.len() {
  if v[i].some_predicate() {
    v[i].val = v.iter().filter(|o| o.some_predicate()).count();
  }
}