在结构中改变数组的最佳方法?

Best Way To Mutate Arrays in Structs?

我有如下结构

struct Foo {
   x: [i8;64]
   y: i8
}

我想在 Foo 中更新数组 x 中的一个值,当我通过一个函数传递它时。我能想到的最佳解决方案是制作 x 的可变副本,然后更新该副本,然后使用新数组创建新的 Foo

fn updateFoo(myFoo: Foo, index: usize, newvalue: i8) -> Foo {
    let mut newX = myFoo.x;
    newX[index] = newvalue;
    Foo {
         x: newX,
         y: myFoo.y,
    }
}

这是一种在 Rust 中的结构内改变数组的有效且惯用的方法吗? 我有哪些替代方法可以在 Rust 中更新数组内的值?谢谢你的帮助。

您也可以将可变引用传递给 Foo:

struct Foo {
    x: [i8; 64],
    y: i8,
}

fn updateFoo(myFoo: &mut Foo, index: usize, newvalue: i8) {
    myFoo.x[index] = newvalue;
}

playground