Macro loop_unwrap::unwrap_break_err [−][src]
Works only on Result enum. If the value is Err(e), breaks the loop returning Err(e). Otherwise, it unwraps and the code continues. Supports loop labels.
Examples
let value = loop { let s = "not a number"; let n = unwrap_break_err!(s.parse::<i32>(), "Couldn't parse number."); // breaks with error value break Ok(n + 1); //<-- this line will never be reached since the macro breaks }; assert_eq!(true, value.is_err());
let result = 'main: loop { loop { let n = unwrap_break_err!("t".parse::<i32>(), 'main); break 'main Ok(100); } }; assert_eq!(result.is_err(), true);