我想用Rust编写类似下面代码的东西。
fn main() {
let mut v: Vec<i64> = vec![1, 2, 3, 4, 5];
let mut s: Vec<&mut i64> = v
.iter_mut()
.filter(|val| **val < 2_i64)
.collect();
if s.len() == 0 {
s = v
.iter_mut()
.filter(|val| **val > 2_i64)
.collect();
}
*s[0] = 0;
println!("{:?}", v);
}
显然是在两次引用中进行借用。 我知道这会导致错误,E0384:无法将可变变量s分配两次,无法将不可变变量分配两次
。
您能告诉我如何在Rust中编写此类工作流程吗? 我想过滤值,如果返回结果为空,则应用另一个过滤器并获取借用参考的 Vec
。
我尝试使用共享引用。 过滤了 Vec
后,我需要将共享引用转换为借用引用,但这是不可能的。
i64
吗?你可以直接创建一个带有数字的新向量。 - Boiethiosv
做什么?解决方案有些取决于它。 - hellowVec
的struct
。但为了简化它,我使用了i64
。我想在应用过滤器后更改结构字段。 - fx-kirinfor
循环? - Boiethios