macro_rules! function { (@ret) => { ... }; (@ret $t:ty) => { ... }; (($($p:ty),*) $(-> $r:ty)?) => { ... }; }