1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#[doc(hidden)]
#[macro_export]
macro_rules! builder {
(
$( #[ $( $meta:tt )* ] )*
$vis:vis struct $name:ident {
$(
$( #[doc=$doc:expr] )*
$field:ident : $type:ty,
)*
}
) => {
$( #[ $( $meta )* ] )*
$vis struct $name {
$(
$( #[doc=$doc] )*
$field : $type,
)*
}
impl $name {
$(
pub fn $field(mut self, value: $type) -> Self {
self.$field = value;
self
}
)*
}
}
}