macro_rules! vector { ($x:expr, $y:expr) => { ... }; ($x:expr, $y:expr, $z:expr) => { ... }; ($x:expr, $y:expr, $z:expr, $w:expr) => { ... }; [$x:expr, $y:expr] => { ... }; [$x:expr, $y:expr, $z:expr] => { ... }; [$x:expr, $y:expr, $z:expr, $w:expr] => { ... }; ([$splat:expr; 2]) => { ... }; ([$splat:expr; 3]) => { ... }; ([$splat:expr; 4]) => { ... }; }