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