macro_rules! impl_dep_obj_impl {
(
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
$Id:ty {
$($objs:tt)*
}
) => { ... };
(
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
$($token:tt)*
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, type $Obj:ty => $StatePart:ty | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, type $Obj:ty => $StatePart:ty { . $state_part_field:tt } | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, optional type $Obj:ty => $StatePart:ty | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, optional type $Obj:ty => $StatePart:ty { . $state_part_field:tt } | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, trait $Obj:path => $StatePart:ty | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, trait $Obj:path => $StatePart:ty { . $state_part_field:tt } | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, optional trait $Obj:path => $StatePart:ty | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, optional trait $Obj:path => $StatePart:ty { . $state_part_field:tt } | . $component_field:tt $($tail:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$([[$ty_Obj:ty] [$ty_StatePart:ty] [$($ty_state_part_field:tt)*] [$($ty_component_field:tt)*]])*]
[$([[$opt_ty_Obj:ty] [$opt_ty_StatePart:ty] [$($opt_ty_state_part_field:tt)*] [$($opt_ty_component_field:tt)*]])*]
[$([[$tr_Obj:path] [$tr_StatePart:ty] [$($tr_state_part_field:tt)*] [$($tr_component_field:tt)*]])*]
[$([[$opt_tr_Obj:path] [$opt_tr_StatePart:ty] [$($opt_tr_state_part_field:tt)*] [$($opt_tr_component_field:tt)*]])*]
[$(,)?]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[, $($token:tt)* ]
) => { ... };
(
@objs
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*] [$Id:ty]
[$($ty:tt)*] [$($opt_ty:tt)*] [$($tr:tt)*] [$($opt_tr:tt)*]
[$token:tt $($tail:tt)*]
) => { ... };
}