我有一个Vec
结构体。当迭代这个Vec
时使用.iter()
我想编辑 for
中的每个元素循环,但我收到一个错误,指出每个元素已被借用,我该如何解决这个问题?这是一个小代码示例:
struct complex_struct {
attr1: i32
}
let elements: Vec<complex_struct> = generate_data();
for element in elements.iter() {
element.attr1 = 0;
}
最佳答案
使用iter_mut
从迭代器中获取可变元素:
#[derive(Debug)]
struct ComplexStruct {
attr1: i32
}
fn main() {
let mut elements: Vec<ComplexStruct> = vec![ComplexStruct { attr1: 5 }];
for element in elements.iter_mut() {
element.attr1 = 0;
}
dbg!(elements); // prints out [ComplexStruct { attr1: 0 }]
}
关于vector - 如何在迭代过程中改变向量的项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62627760/