macro_rules! return_some {
($var:expr) => { ... };
(inner $var:expr) => { ... };
}Expand description
Checks whether supplied Option variable is Some
and if so, returns it.
If variant is an None, nothing happens.
This macro supports two forms:
return_some!(Some(42));- will returnSome(42).return_some!(inner Some(42));- will return just42.
ยงExamples
fn choose_one(left: Option<u8>, right: Option<u8>) -> Option<u8> {
return_some!(left);
return_some!(right);
None
}
fn choose_one_inner(left: Option<u8>, right: Option<u8>) -> u8 {
return_some!(inner left);
return_some!(inner right);
panic!("Both variables are bad")
}
assert_eq!(choose_one(None, Some(10)), Some(10));
assert_eq!(choose_one_inner(Some(1), None), 1);