[][src]Macro bugsalot::expect

macro_rules! expect {
    ( $e:expr, $message:expr, () ) => { ... };
    ( $e:expr, $message:expr, $err:expr ) => { ... };
    ( $e:expr, $message:expr ) => { ... };
}

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