rust - 如何使用参数来索引 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`
这是我第一次写关于堆栈溢出的问题,所以如果我在某个地方弄乱了格式,对不起。
解决方案
问题似乎出在您的函数中,因为 foo 是类型foo: u32
您可以在此处和编译器结果中看到,数组索引必须是类型usize
,因此您可以将其转换usize
为
array[foo as usize] = 9
或将您的函数标题更改为
fn example(foo: usize) {
推荐阅读
- mysql - 简单优化查询 - MYSQL
- c - 为什么 gcc 即使在使用 f 后缀后仍将浮点文字转换为 double 但 clang 似乎没有?
- html - 为什么居中和超链接的图像左右两侧的空白是可点击的?
- linux - 在 Linux 脚本中接收“curl: (3) Illegal characters found in URL”
- javascript - Javascript - 为什么 Ramda over 函数在这里不起作用?
- c# - 将列表中的登录信息与 txt 值匹配
- mysql - 在 MySQL 中将两个查询连接在一起
- optimization - SAT和线性规划有什么区别
- ruby-on-rails - 将 Rails 条件语句传递给 where 子句
- php - 如何翻译 Laravel 5.7 电子邮件验证?