macro_rules! swap_n { ($first:expr, $second:expr, $($e:expr),+) => { ... }; ($first:expr, $second:expr) => { ... }; ($first:expr) => { ... }; }