macro_rules! dep_obj {
(
$(#[$attr:meta])* $vis:vis struct $name:ident
$(< $( $lt:tt $( : $clt:tt $(+ $dlt:tt )* )? ),+ $(,)?>)?
become $set:ident in $id:ty
$(where BuilderCore $(< $( $blt:tt $( : $bclt:tt $(+ $bdlt:tt )* )? ),+ $(,)?>)? = $bct:ty)? {
$($(
$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?
),+ $(,)?)?
}
) => { ... };
(
@impl $builder:ident $id_builder:ident $ty:ident $this:ident $context:ident
[$(#[$attr:meta])*] ($vis:vis) $name:ident become $set:ident in $id:ty ;
[$($x:tt)*]
[$($y:tt)*]
[$($f:tt)*]
[$($b:tt)*]
[$($s:tt)*]
[$($p:tt)*]
[$($c:tt)*]
[$($l:tt)*]
[$field:ident : $field_ty:ty = $field_val:expr $(, $($other_fields:tt)+)?];
[$([ $($g:tt)+ ], [ $($r:tt)+ ])?]
$($bct:ty [$([ $($bg:tt)+ ], [ $($br:tt)+ ])?])?
) => { ... };
(
@impl $builder:ident $id_builder:ident $ty:ident $this:ident $context:ident
[$(#[$attr:meta])*] ($vis:vis) $name:ident become $set:ident in $id:ty ;
[$($x:tt)*]
[$($y:tt)*]
[$($f:tt)*]
[$($b:tt)*]
[$($s:tt)*]
[$($p:tt)*]
[$($c:tt)*]
[$($l:tt)*]
[$field:ident yield $field_ty:ty $(, $($other_fields:tt)+)?];
[$([ $($g:tt)+ ], [ $($r:tt)+ ])?]
$($bct:ty [$([ $($bg:tt)+ ], [ $($br:tt)+ ])?])?
) => { ... };
(
@impl $builder:ident $id_builder:ident $ty:ident $this:ident $context:ident
[$(#[$attr:meta])*] ($vis:vis) $name:ident become $set:ident in $id:ty ;
[$($x:tt)*] [$($y:tt)*] [$($f:tt)*] [$($b:tt)*] [$($s:tt)*] [$($p:tt)*] [$($c:tt)*] [$($l:tt)*] [];
[$([ $($g:tt)+ ], [ $($r:tt)+ ])?]
$($bct:ty [$([ $($bg:tt)+ ], [ $($br:tt)+ ])?])?
) => { ... };
}