Similar to if let, while let can make awkward match sequences
more tolerable. Consider the following sequence that increments 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!
}
}
}