首页 > 解决方案 > 如何使用参数来索引 rust 中的数组?

问题描述

我正在尝试创建一个函数,它将接受一个参数并将其用作数组的索引 rust 不会让我这样做,因此我希望找到一种替代方法来实现相同的结果。

虽然我不是 100% 我相信 rust 不会让我运行代码,因为它认为我使用的参数可能超出数组的范围,为此我尝试使用该get()函数:

array.get(foo).unwrap();

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

重现错误的示例代码:

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

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

array[foo] = 9
^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`

这是我第一次写关于堆栈溢出的问题,所以如果我在某个地方弄乱了格式,对不起。

标签: rust

解决方案


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

array[foo as usize] = 9

或将您的函数标题更改为

fn example(foo: usize) {

推荐阅读