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

Arrays 在结构中改变数组的最佳方法?,arrays,struct,rust,mutable,Arrays,Struct,Rust,Mutable,我有一个如下的结构 struct Foo { x: [i8;64] y: i8 } 当我将数组x传递给函数时,我想更新Foo中数组x中的值。我能想到的最佳解决方案是制作x的可变副本,然后更新该副本,然后用新数组创建一个新的Foo fn updateFoo(myFoo: Foo, index: usize, newvalue: i8) -> Foo { let mut newX = myFoo.x; newX[index] = newvalue; Foo

我有一个如下的结构

struct Foo {
   x: [i8;64]
   y: i8
}
当我将数组
x
传递给函数时,我想更新
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:

structfoo{
x:[i8;64],
y:i8,
}
fn updateFoo(myFoo:&mutfoo,索引:usize,newvalue:i8){
myFoo.x[索引]=新值;
}

我对自己很不熟悉,所以没有资格回答-但是你不能让
myFoo
参数成为可变引用,而不是“拥有”吗?然后可以通过
myFoo.x[index]=newValue直接进行变异。