我想将一个数组传递给一个函数并更改其中的内容.我怎么能这样做,这是我下面的代码,但当然它不起作用.
fn change_value(mut arr: &[i32]) {
    arr[1] = 10;
}
fn main() {
    let mut arr: [int; 4] = [1, 2, 3, 4];
    change_value(&arr);
    println!("this is {}", arr[1]);
}
我收到错误:"无法分配给不可变的vec内容__CODE__".
我一直在寻找,但作为一个漂亮的新手Rust程序员,我找不到任何东西.另外,Rust对其语言进行了大量修改并没有帮助,因此很多方法都被弃用或删除了.
Vla*_*eev 46
Rust引用(用&符号表示)有两种:immutable(&T)和mutable(&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自己(因为它指向不同的切片),但您无法更改它引用的数据.
| 归档时间: | 
 | 
| 查看次数: | 18021 次 | 
| 最近记录: |