1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#[macro_export]
macro_rules! return_if_ok {
    ($expression: expr) => {
        match $expression {
            ::std::result::Result::Ok(value) => {
                return ::std::result::Result::Ok(value)
            }
            ::std::result::Result::Err(error) => error
        }
    }
}


#[test]
fn it_works() {
    fn result_ok() -> Result<i32, ()> {
        Err(return_if_ok!(Ok(4)))
    }
    assert_eq!(result_ok(), Ok(4));

    fn result_err() -> Result<i32, ()> {
        Err(return_if_ok!(Err(())))
    }
    assert_eq!(result_err(), Err(()));
}