macro_rules! return_ok {
($var:expr) => { ... };
(inner $var:expr) => { ... };
}Expand description
Checks whether supplied Result variable is Ok
and if so, returns it.
If variant is an Err, macro evaluates to the contents of the Err
variant.
This macro supports two forms:
return_ok!(Ok(42));- will returnOk(42).return_ok!(inner Ok(42));- will return just42.
ยงExamples
fn choose_one(left: Result<u8, ()>, right: Result<u8, ()>) -> Result<u8, ()> {
return_ok!(left);
return_ok!(right);
Err(())
}
fn choose_one_inner(left: Result<u8, ()>, right: Result<u8, ()>) -> u8 {
return_ok!(inner left);
return_ok!(inner right);
panic!("Both variables are bad")
}
assert_eq!(choose_one(Err(()), Ok(10)), Ok(10));
assert_eq!(choose_one_inner(Ok(1), Err(())), 1);