macro_rules! dep_type {
(
type BuilderCore $($token:tt)*
) => { ... };
(
@type BuilderCore
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
= $BuilderCore:ty;
$(#[$attr:meta])* $vis:vis struct $name:ident $($body:tt)*
) => { ... };
(
@type BuilderCore
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
= $BuilderCore:ty;
$($token:tt)*
) => { ... };
(
@type BuilderCore
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
$($token:tt)*
) => { ... };
(
$(#[$attr:meta])* $vis:vis struct $name:ident $($body:tt)*
) => { ... };
(
@struct
[$([$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*])?]
[$([$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $obj:ident in $Id:ty
{
$($($field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?),+ $(,)?)?
}
) => { ... };
(
@struct
[[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]]
[$([$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $obj:ident in $Id:ty
{
$($($field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?),+ $(,)?)?
}
$($token:tt)+
) => { ... };
(
@struct
[]
[$([$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $obj:ident in $Id:ty
{
$($($field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?),+ $(,)?)?
}
type BuilderCore $($token:tt)*
) => { ... };
(
@struct
[]
[$([$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $obj:ident in $Id:ty
{
$($($field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?),+ $(,)?)?
}
$($token:tt)*
) => { ... };
(
@struct
[$([$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*])?]
[$([$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
$($token:tt)*
) => { ... };
(
@type BuilderCore after
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])+)?]
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
= $BuilderCore:ty;
) => { ... };
(
@type BuilderCore after
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])+)?]
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
= $BuilderCore:ty;
$($token:tt)*
) => { ... };
(
@type BuilderCore after
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])+)?]
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
$($token:tt)*
) => { ... };
(
@concat_generics
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]]
[$([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])*]
) => { ... };
(
@concat_generics_done
[$BuilderCore:ty]
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])*]
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
) => { ... };
(
@concat_generics
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[]
[$([$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?])*]
) => { ... };
(
@unroll_fields
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($core_fields:tt)*]
[$($core_new:tt)*]
[$($core_consts:tt)*]
[$($dep_props:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[[$field:ident : $field_ty:ty = $field_val:expr] $($fields:tt)*]
) => { ... };
(
@unroll_fields
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($core_fields:tt)*]
[$($core_new:tt)*]
[$($core_consts:tt)*]
[$($dep_props:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[[$event:ident yield $event_args:ty] $($fields:tt)*]
) => { ... };
(
@unroll_fields
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($core_fields:tt)*]
[$($core_new:tt)*]
[$($core_consts:tt)*]
[$($dep_props:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[[$field:ident $delim:tt $field_ty:ty $(= $field_val:expr)?] $($fields:tt)*]
) => { ... };
(
@unroll_fields
[$([$attr:meta])*] [$vis:vis] [$name:ident] [$obj:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$($core_fields:tt)*]
[$($core_new:tt)*]
[$($core_consts:tt)*]
[$($dep_props:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[]
) => { ... };
}