macro_map

Macro try_ok_or_else

Source
macro_rules! try_ok_or_else {
    ($result:expr, || $closure:expr) => { ... };
}
Expand description

An analog to Result::map_err followed by a ? but without a closure.

use macro_map::try_ok_or_else;

fn myfn() -> Result<(), i64> {
    let myoption: Option<&str> = None;
    try_ok_or_else!(myoption, || 123);
    Ok(())
}

let mapped = myfn();

assert_eq!(mapped, Err(123));

Or with postfix-macros:

use macro_map::try_ok_or_else;
use postfix_macros::postfix_macros;

fn myfn() -> Result<(), i64> {
    postfix_macros! {
        let myoption: Option<&str> = None;
        myoption.try_ok_or_else!(|| 123);
        Ok(())
    }
}


let mapped = myfn();

assert_eq!(mapped, Err(123));