为什么 Rust 在读取循环后看不到变量?
Why does Rust not see a variable after a loop is read?
我有一个函数,其缩写版本可能如下所示:
loop {
let mut changed = false;
for p in 0..sys.len() {
k = ...
if k == None { continue; }
// some stuff
for (v, _) in &key.0 {
// some stuff
loop {
if n == 2 {
changed = true;
} else if n % 2 == 0 {
changed = true;
} else if n >= 2 {
changed = true;
} else {
changed = true;
}
}
}
}
if !changed { return; }
}
您可以看到在最后一个 if 语句中访问了标志。但我收到此警告消息:
warning: value assigned to `changed` is never read
202 | changed = true;
| ^^^^^^^
|
= note: #[warn(unused_assignments)] on by default
而且我没有收到其他 warning/error 消息。这是为什么?
因为你从不退出内循环?
我有一个函数,其缩写版本可能如下所示:
loop {
let mut changed = false;
for p in 0..sys.len() {
k = ...
if k == None { continue; }
// some stuff
for (v, _) in &key.0 {
// some stuff
loop {
if n == 2 {
changed = true;
} else if n % 2 == 0 {
changed = true;
} else if n >= 2 {
changed = true;
} else {
changed = true;
}
}
}
}
if !changed { return; }
}
您可以看到在最后一个 if 语句中访问了标志。但我收到此警告消息:
warning: value assigned to `changed` is never read
202 | changed = true;
| ^^^^^^^
|
= note: #[warn(unused_assignments)] on by default
而且我没有收到其他 warning/error 消息。这是为什么?
因为你从不退出内循环?