Macro veilid_bugsalot::unwrap
source · macro_rules! unwrap { ( $e:expr, () ) => { ... }; ( $e:expr, $fallback:expr ) => { ... }; ( $e:expr ) => { ... }; }
Expand description
Unwraps Options and Results, logging/breaking on errors, but unlike a.unwrap()
this is nonfatal and continuable.
Other differences:
- Works on booleans
- Should breakpoint directly on the line of the unwrap!
§Examples
use veilid_bugsalot::unwrap;
let a = true;
let _ : bool = unwrap!(a, false);
let _ : () = unwrap!(a, ());
let _ : () = unwrap!(a);
let _ : bool = unwrap!(a, return);
let a : Option<i32> = Some(42);
let _ : i32 = unwrap!(a, 0);
let _ : () = unwrap!(a, ());
let _ : () = unwrap!(a);
let _ : i32 = unwrap!(a, return);
let a : Result<i32, &'static str> = Ok(42);
let _ : i32 = unwrap!(a, 0);
let _ : () = unwrap!(a, ());
let _ : () = unwrap!(a);
let _ : i32 = unwrap!(a, return);
let a : *const i32 = &42;
let _ : i32 = unsafe { *unwrap!(a, &12) };
let _ : () = unwrap!(a, ());
let _ : () = unwrap!(a);
let _ : i32 = unsafe { *unwrap!(a, return) };