macro_rules! declare_id_types {
($primitive:ty $(, $name:ident)+) => { ... };
($primitive:ty, $next_type_id:expr) => { ... };
($primitive:ty, $next_type_id:expr, $name:ident $(, $rest:ident)*) => { ... };
($($invalid:tt)+) => { ... };
}