我试图创建一个将带有参数并将其用作数组生锈的索引的函数,这将不允许我这样做,因此,我希望找到另一种方法来实现相同的结果
尽管我不是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);
}
这是我第一次在堆栈溢出时编写问题,因此,如果我将格式弄乱了,抱歉。
答案 0 :(得分:0)
问题似乎出在您的函数中,因为foo的类型为foo: u32
您可以看到here,并且在编译器结果中,数组索引的类型必须为usize
,因此可以将其强制转换为usize
array[foo as usize] = 9
或将函数标头更改为
fn example(foo: usize) {