macro_rules! xml_write { (struct $ty:ident $(<$life:lifetime>)? { $($field:ident ,)+ } -> |$writer:ident| $block:block) => { ... }; (enum $ty:ident |$writer:ident| { $($var:pat => $block:block ,)+ } ) => { ... }; }