macro_rules! opt_or_else {
    ($opt:expr, || $mapper:expr $(,)? ) => { ... };
    ($opt:expr, | $($anything:tt)* ) => { ... };
    ($opt:expr, $function:path $(,)?) => { ... };
}