macro_rules! context {
(
$vis:vis struct $name:ident in mod $mod_name:ident
$(< $( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+ $(,)?>)?
{
$($(
$field_1:ident $($field_2:ident)? : $field_mod:ident $field_ty:ty
),+ $(,)?)?
}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{$field:ident : ref $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{dyn $field:ident : ref $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{$field:ident : mut $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{dyn $field:ident : mut $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{$field:ident : const $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*}
{$({$($p:tt)*})*}
{$({$($a:tt)*})*}
{$({$($b:tt)*})*}
{$($d:tt)*}
{$($m:tt)*}
{dyn $field:ident : const $ty:ty $(, $($other_fields:tt)+)?}
) => { ... };
(
@impl $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$({$($f:tt)*})*} {$({$($p:tt)*})*} {$({$($a:tt)*})*} {$({$($b:tt)*})*}
{$($d:tt)*} {$($m:tt)*} {}
) => { ... };
(
@impl (dyn) $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{} {}
) => { ... };
(
@impl (dyn) $name:ident $tr:ident $this:ident
[$($g:tt)*] [$($r:tt)*]
{$($d:tt)*} {$($m:tt)*}
) => { ... };
}