Macro loop_unwrap::unwrap_break [−][src]
Works like .unwrap
, if it’s an Err or None, it calls break
on the loop.
Prints an error message with println!()
if provided.
Loop Label can be provided in any order besides the Result/Option being the first argument.
If loop label is proivded, the specified loop will be break;-ed.
Examples
loop { let input = "Not a number"; let parsed_input: i32 = unwrap_break!(input.parse()); //parse returns Err for this input } println!("This line will be reached.");
loop { let input = "Not a number"; let parsed_input: i32 = unwrap_break!(input.parse(), "Please Enter a Number!"); // "Please Enter a Number!" is printed in console with a `println!()` //loop breaks }
loop { let some_value: i32 = unwrap_break!(Some(32), "Please Enter a Number!"); assert_eq!(some_value, 32_i32) //no breakage here. }
'main: loop { loop { let n = unwrap_break!("t".parse::<i32>(), "Couldn't parse, exiting main loop", 'main); break; //<-- this line won't be reached. } println!("This line will never be reached, because 'main breaks."); }