【问题标题】:How to mutate items of a vector during iteration? [duplicate]如何在迭代期间改变向量的项目? [复制]
【发布时间】:2020-06-28 20:15:26
【问题描述】:

我有一个Vec 的结构。使用.iter() 迭代此Vec 时,我想编辑for 循环中的每个元素,但我收到一个错误,提示每个元素已被借用,我该如何解决?这是一个小代码示例:

struct complex_struct {
    attr1: i32
}
    
let elements: Vec<complex_struct> = generate_data();
    
for element in elements.iter() {
    element.attr1 = 0;
}

【问题讨论】:

    标签: vector rust iterator borrow-checker mutability


    【解决方案1】:

    使用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 }]
    }
    

    playground

    【讨论】:

    • 谢谢!这正是我所需要的。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2011-03-28
    • 2020-09-07
    • 2021-09-03
    • 2015-03-31
    • 2012-11-15
    • 1970-01-01
    • 2016-07-25
    相关资源
    最近更新 更多