macro_rules! context {
(
mod $name:ident
$(< $( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+ $(,)?>)?
{
$($(
$field:ident $(/ $field_mut:ident)? : $field_mod:ident $field_ty:ty
),+ $(,)?)?
}
) => { ... };
(
@impl $name:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$field:ident : ref $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$field:ident / $field_mut:ident : mut $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$field:ident : const $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*} {}
) => { ... };
}