Macro stdext::return_some

source ·
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 return Some(42).
  • return_some!(inner Some(42)); - will return just 42.

§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);