return-ok 0.1.0

Macros for dealing with Options and Results where you shouldn't
Documentation
use return_ok::ok_some;

fn ok_some_ok_some() -> Result<Option<i32>, i32> {
    let x = ok_some!(Ok::<_, i32>(Some(1)));
    Ok(Some(x))
}

fn ok_some_ok_none() -> Result<Option<i32>, i32> {
    let x = ok_some!(Ok::<_, i32>(None));
    Ok(Some(x))
}

fn ok_some_err() -> Result<Option<i32>, i32> {
    let x = ok_some!(Err(3));
    Ok(Some(x))
}

fn main() {
    assert_eq!(ok_some_ok_some(), Ok(Some(1)));
    assert_eq!(ok_some_ok_none(), Ok(None));
    assert_eq!(ok_some_err(), Err(3));
}