rust 如何将负值设置为索引变量的初始值?

jslywgbw  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(107)

如何将数组的索引变量的初始值设置为-1?索引变量数据类型必须为usize,且usize的值不能为负。
我想这样做:

let mut i: usize = -1;
let mut array: [i32; 10] = [0; 10];

i += 1;
let data = array[i];
9lowa7mx

9lowa7mx1#

这听起来像是在做某种迭代,用另一种方式表达可能会更好,即使不是,你也可以在第一次使用usize之后增加它,而不是之前。但如果这两个都不适用,则始终存在wrapping_add

fn main() {
    let mut i = usize::MAX;
    i = i.wrapping_add(1);
    println!("{i}");  // 0
}
xv8emn3q

xv8emn3q2#

迭代器并不总是答案。在其他语言中,可以从0开始,简单地使用array[i++]--我不明白为什么🦀Rust省略了这么有用的东西。
我把它作为宏循环的一部分,我最好的尝试是一个可怕的块表达式。

$(... array[{ /* clumsy i++ */ i += 1; i - 1 }] ...)+
i2loujxw

i2loujxw3#

1.索引数据类型必须为usize
1.但usize不能为负值
解决方案:使用as关键字进行类型转换

let data = array[i as usize];

相关问题