У меня есть структура, подобная следующей
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? Спасибо за помощь.
Вы также можете просто передать изменяемую ссылку Foo:
struct Foo {
x: [i8; 64],
y: i8,
}
fn updateFoo(myFoo: &mut Foo, index: usize, newvalue: i8) {
myFoo.x[index] = newvalue;
}
Я сам довольно новичок в Rust, поэтому не имею права отвечать, но разве вы не можете просто сделать аргумент
myFoo
изменяемой ссылкой, а не быть «принадлежащим»? Затем вы можете напрямую мутировать с помощьюmyFoo.x[index] = newValue
.