Macro stdext::return_ok [−][src]
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);