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; }; }