macro_rules! defpart {
(for $name : ty ; impl Part(| $right : pat $(,) ? | $($body : tt) *)) => { ... };
(for $name : ty ; impl
Part(| $left : ident, $right : pat $(,) ? | $($body : tt) *)) => { ... };
(#[lowlevel] for $name : ident ; impl
Part(| $pretty : ident, $right : pat $(,) ? | $($body : tt) *)) => { ... };
(#[lowlevel] struct $name : ident
{ $($field_name : ident : $field_ty : ty), * $(,) ? }
constructor($($constructor_param : ident : $constructor_ty : ty), * $(,) ?)
{ $($constructor_body : tt) * } impl
Part(| $pretty : ident, $right : pat $(,) ? | $($body : tt) *)) => { ... };
(struct $name : ident { $($field_name : ident : $field_ty : ty), * $(,) ? }
constructor($($constructor_param : ident : $constructor_ty : ty), * $(,) ?)
{ $($constructor_body : tt) * } impl
Part(| $right : pat $(,) ? | $($body : tt) *)) => { ... };
(struct $name : ident { $($field_name : ident : $field_ty : ty), * $(,) ? }
impl Part(| $right : pat | $($body : tt) *)) => { ... };
}