与 if let 类似,while let 可以使笨拙的 match 序列更易于接受。考虑以下递增 i 的序列
#![allow(unused)]fnmain() {
// Make `optional` of type `Option<i32>`letmut optional = Some(0);
// Repeatedly try this test.loop {
match optional {
// If `optional` destructures, evaluate the block.Some(i) => {
if i > 9 {
println!("Greater than 9, quit!");
optional = None;
} else {
println!("`i` is `{:?}`. Try again.", i);
optional = Some(i + 1);
}
// ^ Requires 3 indentations!
},
// Quit the loop when the destructure fails:
_ => { break; }
// ^ Why should this be required? There must be a better way!
}
}
}