macro_rules! dep_obj {
(
$(#[$attr:meta])* $vis:vis struct $name:ident
$(< $( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+ $(,)?>)?
become $system:ident in $Id:ty
$(where BuilderCore $(< $( $bc_lt:tt $( : $bc_clt:tt $(+ $bc_dlt:tt )* )? ),+ $(,)?>)? = $BuilderCore:ty)? {
$($(
$field:ident $field_delim:tt $field_ty:ty $(= $field_val:expr)?
),+ $(,)?)?
}
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty] [$($BuilderCore:ty)?]
[$($g:tt)*] [$($r:tt)*] [$($bc_g:tt)*] [$($bc_r:tt)*]
[$($builder_methods:tt)*]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$field:ident : $field_ty:ty = $field_val:expr $(, $($other_fields:tt)+)?]
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty] [$($BuilderCore:ty)?]
[$($g:tt)*] [$($r:tt)*] [$($bc_g:tt)*] [$($bc_r:tt)*]
[$($builder_methods:tt)*]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$field:ident : $field_ty:ty = $field_val:expr $(, $($other_fields:tt)+)?]
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty] [$($BuilderCore:ty)?]
[$($g:tt)*] [$($r:tt)*] [$($bc_g:tt)*] [$($bc_r:tt)*]
[$($builder_methods:tt)*]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$field:ident $field_delim:tt $field_ty:ty $(= $field_val:expr)? $(, $($other_fields:tt)+)?]
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty] [$($BuilderCore:ty)?]
[$($g:tt)*] [$($r:tt)*] [$($bc_g:tt)*] [$($bc_r:tt)*]
[$($builder_methods:tt)*]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[]
) => { ... };
}