如何将数组的索引变量的初始值设置为-1?索引变量数据类型必须为usize,且usize的值不能为负。我想这样做:
let mut i: usize = -1; let mut array: [i32; 10] = [0; 10]; i += 1; let data = array[i];
9lowa7mx1#
这听起来像是在做某种迭代,用另一种方式表达可能会更好,即使不是,你也可以在第一次使用usize之后增加它,而不是之前。但如果这两个都不适用,则始终存在wrapping_add:
usize
wrapping_add
fn main() { let mut i = usize::MAX; i = i.wrapping_add(1); println!("{i}"); // 0 }
xv8emn3q2#
迭代器并不总是答案。在其他语言中,可以从0开始,简单地使用array[i++]--我不明白为什么🦀Rust省略了这么有用的东西。我把它作为宏循环的一部分,我最好的尝试是一个可怕的块表达式。
array[i++]
$(... array[{ /* clumsy i++ */ i += 1; i - 1 }] ...)+
i2loujxw3#
1.索引数据类型必须为usize1.但usize不能为负值解决方案:使用as关键字进行类型转换
let data = array[i as usize];
3条答案
按热度按时间9lowa7mx1#
这听起来像是在做某种迭代,用另一种方式表达可能会更好,即使不是,你也可以在第一次使用
usize
之后增加它,而不是之前。但如果这两个都不适用,则始终存在wrapping_add
:xv8emn3q2#
迭代器并不总是答案。在其他语言中,可以从0开始,简单地使用
array[i++]
--我不明白为什么🦀Rust省略了这么有用的东西。我把它作为宏循环的一部分,我最好的尝试是一个可怕的块表达式。
i2loujxw3#
1.索引数据类型必须为usize
1.但usize不能为负值
解决方案:使用as关键字进行类型转换