// derive_builder.mrs — builder pattern generator // Demonstrates: struct pattern, variadic field binding, escape block, // expression injection, spread iteration in struct and impl bodies macro derive_builder! { struct $name:ident { $($field:ident : $ty:ty),* } => { @{ let builder_name = format_ident!("{}_Builder", name.to_string()); } T~{ pub struct ${ builder_name } { for field in $fields => pub $field.name: Option<$field.ty>, } impl ${ builder_name } { pub fn build(self) -> $name { $name { for field in $fields => $field.name: self.$field.name.unwrap(), } } } } } }