Function Rust函数如何修改数组索引的值?

Function Rust函数如何修改数组索引的值?,function,parameters,rust,increment,Function,Parameters,Rust,Increment,我的目标是让Rust函数f增加数组x的一个元素,并增加索引i: fn main() { let mut x: [usize; 3] = [1; 3]; let mut i: usize = 1; f(&mut i, &mut x); println!("\nWant i = 2, and i = {}", i); println!("\nWant x = [1,2,1], and x = {:?}", x); } // end main

我的目标是让Rust函数
f
增加数组
x
的一个元素,并增加索引
i

fn main() {
    let mut x: [usize; 3] = [1; 3];
    let mut i: usize = 1;
    f(&mut i, &mut x);
    println!("\nWant i = 2, and i = {}", i);
    println!("\nWant x = [1,2,1], and x = {:?}", x);
} // end main

fn f(i: &mut usize, x: &mut [usize]) {
    x[i] += 1;
    i += 1;
} // end f
编译器报告以下错误:

error[E0277]:未满足特性绑定`&mut usize:std::slice::SliceIndex`
-->src/main.rs:10:5
|
10 | x[i]+=1;
|^^^^切片索引的类型为'usize'或范围为'usize'`
|
=help:trait`std::slice::SliceIndex`未为`&mut usize实现`
=注:由于“[usize]的”std::ops::Index`的impl上的要求,因此需要`
错误[E0368]:二进制赋值操作“+=”不能应用于类型“&mut usize”`
-->src/main.rs:11:5
|
11 | i+=1;
|     -^^^^^
|     |
|无法在类型“%mut usize”上使用“+=”`

如何使函数
f
同时增加其数组参数
x
的一个元素和索引
I
(也是一个参数)?

您需要取消引用
I
。这可能会让人困惑,因为生锈会给你带来很多麻烦


简单地说,
i
=>
*i
fn main() {
    let mut x: [usize; 3] = [1; 3];
    let mut i: usize = 1;
    f(&mut i, &mut x);
    println!("\nWant i = 2, and i = {}", i);
    println!("\nWant x = [1,2,1], and x = {:?}", x);
} // end main

fn f(i: &mut usize, x: &mut [usize]) {
    x[*i] += 1;
    *i += 1;
} // end f