loops 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 orientedlanguage”, that is, most things are expressions that evaluate to a value,rather than statements. loop
stuck out as strange in this way, as it waspreviously a statement.
For now, this only applies to loop
, and not things like while
or for
.See the rationale for this decision in RFC issue #1767.