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