2017-08-23 52 views
0

我有一个功能,它的缩写版本可能看起来像:为什么Rust在读取循环后没有看到变量?

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 

而且我没有收到其他警告/错误消息。为什么是这样?

回答

10

因为你永远不会退出内循环?

+5

漂亮的智能编译器 – Malice

相关问题