Можно ли объявить тип переменной в циклах Rust for?

Пример C++:

for (long i = 0; i < 101; i++) {
    //...
}

В Rust я попытался:

for i: i64 in 1..100 {
    // ...
}

Я мог бы просто объявить let i: i64 = var перед циклом for, но я предпочел бы узнать правильный способ сделать это, но это привело к

error: expected one of '@' or 'in', found ':'
 --> src/main.rs:2:10
  |
2 |     for i: i64 in 1..100 {
  |          ^ expected one of '@' or 'in' here

Ответ 1

Вы можете использовать целочисленный суффикс на одном из литералов, которые вы использовали в диапазоне. Вывод типа сделает все остальное:

for i in 1i64..101 {
    println!("{}", i);
}

Ответ 2

Нет, это не представляется возможным объявить тип переменной в for цикла.

Вместо этого более общий подход (например, применимый также к enumerate()) заключается в том, чтобы ввести привязку let путем деструктурирования элемента внутри тела цикла.

Пример:

for e in bytes.iter().enumerate() {
    let (i, &item): (usize, &u8) = e; // here
    if item == b' ' {
        return i;
    }
}