The expression loop {break} has type (), as it must. However, within a second loop labeled 'outer, the expression loop {break 'outer} should have type !, not (). Note that break 'outer and even loop {loop {break 'outer}} are already correctly typed as !.
Example with incorrect type error:
fn foo() {
'outer: loop {
let a : i32;
a = break 'outer // ok
}
}
fn bar() {
'outer: loop {
let a : i32;
a = loop {break 'outer} // error: mismatched types: expected i32, found ()
}
}
fn baz() {
'outer: loop {
let a : i32;
a = loop {loop {break 'outer}} // ok
}
}
I’m using rustc 1.0.0-dev (built 2015-03-17) from ppa:hansjorg/rust.
The expression
loop {break}has type(), as it must. However, within a second loop labeled'outer, the expressionloop {break 'outer}should have type!, not(). Note thatbreak 'outerand evenloop {loop {break 'outer}}are already correctly typed as!.Example with incorrect type error:
I’m using rustc 1.0.0-dev (built 2015-03-17) from ppa:hansjorg/rust.