macro_rules! IterVariantNames {
(
@expand ($($pub_:tt)*) $itername:ident, $name:ident ()
) => { ... };
(
@expand ($($pub_:tt)*) $itername:ident, $name:ident ($($var_names:ident),*)
) => { ... };
(
@iter ($itername:ident, $name:ident), () -> ($($next_body:tt)*) ($($size_body:tt)*) ($($count:tt)*)
) => { ... };
(
@iter ($itername:ident, $name:ident), ($a:ident, $b:ident, $($rest:tt)*) -> ($($next_body:tt)*) ($($size_body:tt)*) ($($count:tt)*)
) => { ... };
(
@iter ($itername:ident, $name:ident), ($a:ident,) -> ($($next_body:tt)*) ($($size_body:tt)*) ($($count:tt)*)
) => { ... };
(($itername:ident) pub enum $name:ident { $($body:tt)* }) => { ... };
(($itername:ident) enum $name:ident { $($body:tt)* }) => { ... };
}