macro_rules! part {
($part:ident) => { ... };
(pub $part:ident) => { ... };
($part:ident<> : $field:ty) => { ... };
(pub $part:ident<> : $field:ty) => { ... };
($part:ident<$($lt:lifetime),*> : $field:ty) => { ... };
(pub $part:ident<$($lt:lifetime),*> : $field:ty) => { ... };
($part:ident : $field:ty) => { ... };
(pub $part:ident : $field:ty) => { ... };
(@template $part:ident () ($($vis:tt)*) ($($part_type:tt)*)) => { ... };
(@template $part:ident ($($lt:lifetime),*) ($($vis:tt)*) ($($part_type:tt)*) ($field:ty)) => { ... };
(@spec_template $part:ident ($l:lifetime)) => { ... };
(@spec_template $part:ident ($l1:lifetime, $l2:lifetime)) => { ... };
(@spec_template $part:ident ($l1:lifetime, $l2:lifetime, $l3:lifetime)) => { ... };
(@spec_template $part:ident ($($tt:tt)*)) => { ... };
}
Declares a [Part
].
Defines an empty struct type and derives all necessary instances to use it as a marker type for
parts.
This macro can define [AbstractPart
]s using part!(PartName);
or part!(pub PartName);
and
[Field
] parts using part!(PartName: FieldType);
or part!(pub PartName: FieldType);
.