macro_rules! vec2 { ($x:expr, $y:expr $(,)?) => { ... }; (x: $x:expr, y: $y:expr $(,)?) => { ... }; () => { ... }; }