为什么 for 循环中的 i 采用 usize 而不是 u64?

ivo*_*ivo 0 for-loop rust

我是 Rust 新手,遇到了以下问题。以下代码编译没有问题,但在运行时崩溃/恐慌,留下以下消息:“尝试添加溢出”。

这是提到的片段:

let mut fib:[u64; 200] = [1; 200];


for i in 2..fib.len() {
   fib[i] = fib[i - 2] + fib[i - 1];
}

for i in 0..fib.len() {
   print!("{}, ", fib[i]);
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么 i 变量看起来是usize类型而不是u64类型。感谢您的时间和解释。不知怎的,我找不到这方面的正确信息。

mkr*_*er1 5

在迭代中i = 93,您尝试添加的值是fib[91] = 7540113804746346429fib[92] = 12200160415121876738

\n

结果大于 2 64 \xe2\x88\x921,因此u64类型溢出并且代码发生混乱。

\n

这与类型无关i

\n