Macro choose

Source
macro_rules! choose {
    (@props $c:ident) => { ... };
    (@props $c:ident, $key:ident: $value:expr) => { ... };
    (@props $c:ident, $key:ident: $value:expr, $($tail:tt)*) => { ... };
    (@prop $c:ident, otherwise, $value:expr) => { ... };
    (@prop $c:ident, when, $conds:expr) => { ... };
    ($key:ident: $value:tt) => { ... };
    ($key:ident: $value:tt, $($tail:tt)*) => { ... };
}