提问人:SequenceToSequence 提问时间:12/13/2020 最后编辑:pretzelhammerSequenceToSequence 更新时间:2/19/2021 访问量:440
在结构中改变数组的最佳方法?
Best Way To Mutate Arrays in Structs?
问:
我有一个如下结构
struct Foo {
x: [i8;64]
y: i8
}
当我通过函数传递数组时,我想更新数组内的值。我能想到的最好的解决方案是制作一个可变副本,然后更新该副本,然后使用新数组创建一个新副本。x
Foo
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 中数组内的值?谢谢你的帮助。
答:
1赞
pretzelhammer
12/13/2020
#1
您也可以将可变 ref 传递给 Foo:
struct Foo {
x: [i8; 64],
y: i8,
}
fn updateFoo(myFoo: &mut Foo, index: usize, newvalue: i8) {
myFoo.x[index] = newvalue;
}
评论
myFoo
myFoo.x[index] = newValue