Rust 如何使用参数表索引生锈的阵列?
我正在尝试创建一个函数,该函数将接受一个参数并将其用作数组的索引。rust不允许我这样做,因此我希望找到一种替代方法来实现相同的结果 虽然我不是100%的人,但我相信rust不允许我运行代码,因为它认为我使用的参数可能超出了阵列的镜头,为此,我尝试使用Rust 如何使用参数表索引生锈的阵列?,rust,Rust,我正在尝试创建一个函数,该函数将接受一个参数并将其用作数组的索引。rust不允许我这样做,因此我希望找到一种替代方法来实现相同的结果 虽然我不是100%的人,但我相信rust不允许我运行代码,因为它认为我使用的参数可能超出了阵列的镜头,为此,我尝试使用get()函数: array.get(foo.unwrap(); 但是,这仍然无法修复我当前的错误 复制错误的示例代码: fn示例(foo:u32){ 让mut数组:[u32;3]=[0,0,0]; 数组[foo]=9; } fn main(){
get()
函数:
array.get(foo.unwrap();
但是,这仍然无法修复我当前的错误
复制错误的示例代码:
fn示例(foo:u32){
让mut数组:[u32;3]=[0,0,0];
数组[foo]=9;
}
fn main(){
示例(1);
}
程序无法运行,编译器给了我错误
array[foo] = 9
^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
这是我第一次写关于堆栈溢出的问题,所以如果我在什么地方弄乱了格式,很抱歉。问题似乎在您的函数中,因为foo的类型是
foo:u32
您可以在编译器结果中看到,数组索引必须是usize
类型,因此可以将其强制转换为usize
array[foo as usize]=9
或者将函数头更改为
fn示例(foo:usize){
@usummon顺便说一句。在这里你必须小心线程'main'在索引超出范围时惊慌失措:len是3,但索引是4'