Ответ 1
Ссылки ржавчины (обозначаются знаком &
) имеют два вида: неизменяемый (&T
) и изменяемый (&mut T
). Чтобы изменить значение ссылки, эта ссылка должна быть изменчивой, поэтому вам просто нужно передать &mut [i32]
функции, а не &[i32]
:
fn change_value(arr: &mut [i32]) {
arr[1] = 10;
}
fn main() {
let mut arr: [i32; 4] = [1, 2, 3, 4];
change_value(&mut arr);
println!("this is {}", arr[1]);
}
Вам также не нужно mut arr
в аргументе change_value
, потому что mut
обозначает изменчивость этой переменной, а не данные, на которые она указывает. Таким образом, с помощью mut arr: &[int]
вы можете переназначить arr
сам (чтобы он указывал на другой фрагмент), но вы не можете изменить данные, которые он ссылается.