如何使用参数表对锈中的数组进行索引?

时间:2019-06-09 19:07:28

标签: rust

我试图创建一个将带有参数并将其用作数组生锈的索引的函数,这将不允许我这样做,因此,我希望找到另一种方法来实现相同的结果

尽管我不是100%,但我相信rust不能让我运行代码,因为它认为我使用的参数可能会超出数组的范围,为此,我尝试使用{{1 }}函数:

get()

但这仍然不能解决我当前的错误。

重现错误的示例代码:

array.get(foo).unwrap();

程序无法运行,编译器给我错误

fn example(foo: u32) {
    let mut array: [u32; 3] = [0,0,0];    
    array[foo] = 9;
}
fn main() {
    example(1);
}

这是我第一次在堆栈溢出时编写问题,因此,如果我将格式弄乱了,抱歉。

1 个答案:

答案 0 :(得分:0)

问题似乎出在您的函数中,因为foo的类型为foo: u32 您可以看到here,并且在编译器结果中,数组索引的类型必须为usize,因此可以将其强制转换为usize

array[foo as usize] = 9

或将函数标头更改为

fn example(foo: usize) {