macro_rules! if_let {
    { $($variant:ident)::+ ($binding:pat) = $input:expr;
    else $($otherwise:tt)*
  } => { ... };
    { $($variant:ident)::+ ($binding:pat) = $input:expr;
    $($otherwise:tt)*
  } => { ... };
    { $($variant:ident)::+ {$binding:ident} = $input:expr;
    else $($otherwise:tt)*
  } => { ... };
    { $($variant:ident)::+ {$binding:ident} = $input:expr;
    $($otherwise:tt)*
  } => { ... };
}