如何指定 for 循环中循环变量的类型?

Nig*_*eXD 6 rust

i我想指定这个 for 循环中的类型。Visual Studio Code 告诉我输入的类型,i32但数字不是那么大,所以我想将其更改为u8.

for i in 0..101 {
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

我试过这个:

for i: u8 in 0..101 {
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

error: expected one of `@` or `|`, found `:`
 --> src/main.rs:2:10
  |
2 |     for i: u8 in 0..101 {
  |          ^
  |          |
  |          expected one of `@` or `|`
  |          help: maybe write a path separator here: `::`
Run Code Online (Sandbox Code Playgroud)

指定类型的正确方法是什么?

小智 11

for 循环中不可能有类型注释,因为 for 循环需要模式,而模式不能包含类型注释。有关更多详细信息,请参阅Rust 参考。

相反,您可以执行以下三件事之一:

使迭代器的类型明确

在这种情况下,它将是:

for i in 0..101u8 {
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

游乐场

将无可辩驳的模式与 @-pattern 一起使用

for i @ 0..=255u8 in 0..101 {
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

游乐场

在循环内添加类型注释:

for i in 0..101 {
    let i: u8 = i;
    println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)

游乐场