写入迭代器内的数组

时间:2015-12-23 16:07:06

标签: rust

是否可以通过迭代器获得对数组元素的写访问权限?:

#[derive(Default)]
struct Struct {
    field: i32,
}

fn main() {
    let mut array: [Struct; 2] = [Default::default(), Default::default()];
    array[0].field = 2;
    array[1].field = 3;
    foo(&mut array);
    println!("[0]: {}", array[0].field);
    println!("[1]: {}", array[1].field);
}

fn foo(array: &mut [Struct]) {
    for (i, a) in array.iter().enumerate() {
        if a.field > 2 {
            println!("Setting [{}] to zero.", i);
            a.field = 0;
        }
    }
}

这是解决问题的惯用方法吗?

1 个答案:

答案 0 :(得分:4)

  

是否可以通过迭代器获得对数组元素的写访问权?

是的,但您必须使用返回可变引用的迭代器。在这种情况下,请使用iter_mut,而不是iter