loop
s can break with a value
loop
s can now break with a value:
# #![allow(unused_variables)] #fn main() { // old code let x; loop { x = 7; break; } // new code let x = loop { break 7; }; #}
Rust has traditionally positioned itself as an “expression oriented
language”, that is, most things are expressions that evaluate to a value,
rather than statements. loop
stuck out as strange in this way, as it was
previously a statement.
For now, this only applies to loop
, and not things like while
or for
.
It's not clear yet, but we may add this to those in the future.