Macro trackable::track_assert_some [] [src]

macro_rules! track_assert_some {
    ($expr:expr, $error_kind:expr) => { ... };
    ($expr:expr, $error_kind:expr; $($value:expr),+) => { ... };
    ($expr:expr, $error_kind:expr, $message:expr) => { ... };
    ($expr:expr, $error_kind:expr, $message:expr; $($value:expr),+) => { ... };
    ($expr:expr, $error_kind:expr, $fmt:expr, $($arg:tt)*) => { ... };
}

Trackable assertion for Option values.

This is a simple wrapper of the track_panic! macro. It will call track_panic! if $expr is evaluated to None.

Examples

use trackable::error::{Failed, Failure};

fn trackable_checked_sub(a: u32, b: u32) -> Result<u32, Failure> {
    let n = track_assert_some!(a.checked_sub(b), Failed);
    Ok(n)
}

let r = trackable_checked_sub(10, 2); // Ok
assert_eq!(r.ok(), Some(8));

let r = trackable_checked_sub(2, 10); // Err
assert!(r.is_err());
assert_eq!(format!("\n{}", r.err().unwrap()).replace('\\', "/"), r#"
Failed (cause; assertion failed: `a.checked_sub(b).is_some()`)
HISTORY:
  [0] at src/macros.rs:9
"#);