Error code E0571

A break statement with an argument appeared in a non-loop loop.

Example of erroneous code:

#![allow(unused)]
fn main() {
let mut i = 1;
fn satisfied(n: usize) -> bool { n % 23 == 0 }
let result = while true {
    if satisfied(i) {
        break 2 * i; // error: `break` with value from a `while` loop
    }
    i += 1;
};
}

The break statement can take an argument (which will be the value of the loop expression if the break statement is executed) in loop loops, but not for, while, or while let loops.

Make sure break value; statements only occur in loop loops:

#![allow(unused)]
fn main() {
let mut i = 1;
fn satisfied(n: usize) -> bool { n % 23 == 0 }
let result = loop { // This is now a "loop" loop.
    if satisfied(i) {
        break 2 * i; // ok!
    }
    i += 1;
};
}