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