macro_rules! flags {
    () => { ... };
    (None) => { ... };
    (->$expr:expr) => { ... };
    ($($flag_arg:tt);* $(;)?) => { ... };
    ($($flag_arg:tt),* $(,)?) => { ... };
    ($($flag_name:ident$sep:tt$flag_arg:tt),* $(,)?) => { ... };
    ($($flag_name:ident$sep:tt$flag_arg:tt);* $(,)?) => { ... };
    ($ft:tt$(,$($t:tt)*)?) => { ... };
    (={$($st:tt),+,},$ft:tt$(,$($t:tt)*)?) => { ... };
    (={$($st:tt),+,},$ft:tt$(;$($t:tt)*)?) => { ... };
    ($(={$($st:tt),+,},)?$flag_name:ident$flag_arg:tt$(,$($t:tt)*)?) => { ... };
    ($(={$($st:tt),+,},)?$flag_name:ident$flag_arg:tt$(;$($t:tt)*)?) => { ... };
    ($(={$($st:tt),+,},)?$flag_name:ident$sep:tt$flag_arg:tt$(,$($t:tt)*)?) => { ... };
    ($(={$($st:tt),+,},)?$flag_name:ident$sep:tt$flag_arg:tt$(;$($t:tt)*)?) => { ... };
    ($(={$($st:tt),+,},)?[$($ft:tt)+]$($t:tt)*) => { ... };
    ($(={$($st:tt),+,},)?{$($ft:tt)+}$($t:tt)*) => { ... };
    ($(={$($st:tt),+,},)?($($ft:tt)+)$($t:tt)*) => { ... };
    (={$($st:tt),+,},) => { ... };
}
Expand description

Helps for creating flags.