macro_rules! dep_obj {
(
$(#[$attr:meta])* $vis:vis struct $name:ident $($body:tt)*
) => { ... };
(
@struct [$(#[$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $system:ident in $Id:ty
{ $($body:tt)* }
) => { ... };
(
@struct [$(#[$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
become $system:ident in $Id:ty
{ $($body:tt)* }
use $($core:tt)*
) => { ... };
(
@struct [$(#[$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
$($body:tt)*
) => { ... };
(
@core [$(#[$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$system:ident] [$Id:ty]
[
$($(
$(#[$no_clone:ident])? $field:ident $field_delim:tt $field_ty:ty $(= $field_val:expr)?
),+ $(,)?)?
]
$(
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*] $BuilderCore:ty as BuilderCore;
)?
) => { ... };
(
@core [$(#[$attr:meta])*] [$vis:vis] [$name:ident]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$system:ident] [$Id:ty]
[
$($body:tt)*
]
$(
[$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*] $BuilderCore:ty as BuilderCore;
)?
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$($style_builder_methods:tt)*]
[#[move] $field:ident : $field_ty:ty = $field_val:expr $(, $($other_fields:tt)+)?]
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$($style_builder_methods: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]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$($style_builder_methods:tt)*]
[$field:ident yield $field_ty:ty $(, $($other_fields:tt)+)?]
) => { ... };
(
@impl
[$builder:ident]
[$(#[$attr:meta])*] [$vis:vis] [$name:ident] [$system:ident] [$Id:ty]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$($style_builder_methods:tt)*]
[$(#[$no_clone:ident])? $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]
[$($g:tt)*] [$($r:tt)*] [$($w:tt)*]
[$(
[$BuilderCore:ty] [$($bc_g:tt)*] [$($bc_r:tt)*] [$($bc_w:tt)*]
[$($builder_methods:tt)*]
)?]
[$($type_fields:tt)*]
[$($type_methods:tt)*]
[$($type_init:tt)*]
[$($type_bundle:tt)*]
[$($style_builder_methods:tt)*]
[]
) => { ... };
}