macro_rules! p { (@$lit:literal) => { ... }; (@write($($data:expr),+)) => { ... }; (@print($x:expr)) => { ... }; (@$method:ident($($arg:expr),*)) => { ... }; ($($elem:tt $(($($args:tt)*))?),+) => { ... }; }