In the following snippet, break counter * 2
ending with ;
or not, would not affect it returns value 20. It is different from what I find in rust online book, which says expression must not end with ;
.
What is more unbelievable is, {}
is said to be an expression, it is true in loop
but not while
, so the last println!
throws an error like cannot format
which I guess counter is an empty tuple. But I think counter should be integer 0.
fn loop_flow() {
let mut counter = 0;
let a = loop {
counter += 1;
if counter == 10 {
break counter * 2
}
};
println!("value a is {}", a);
let counter = while counter != 0 {
counter -= 1;
counter
}
println!("counter: {} should be 0", counter);
}