首页 > 解决方案 > 在结构中改变数组的最佳方法?

问题描述

我有一个如下结构

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 中数组内的值?谢谢您的帮助。

标签: arraysstructrustmutable

解决方案


您也可以只将可变 ref 传递给 Foo:

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

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

操场


推荐阅读