По следующему коду:
fn main() {
let mut i: Option<i32> = None;
let mut cond = true;
while true && i.map_or(true, |x| x < 10) {
if cond {
cond = false;
i = Some(0);
continue;
}
i = Some(5);
}
}
Я получаю предупреждение:
warning: value assigned to `i` is never read
--> src/lib.rs:8:13
|
8 | i = Some(0);
| ^
|
= note: #[warn(unused_assignments)] on by default
Это очень минимизировано (поэтому, пожалуйста, не обращайте внимания на момент, когда оно зациклится навсегда),но показывает проблему: компилятор, кажется, думает, что i
изнутри if
перезаписывается внешним присваиванием, что явно не так из-за continue
.
Я что-то упустили я ввел ошибку некоторого описания в программу, или это ошибка компилятора?