1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/// Returns a HashSet containing the passed values. #[macro_export] macro_rules! set { ($fst:expr $(, $v:expr)*) => ({ let mut set = HashSet::with_capacity(count!($fst $(, $v)*)); set.insert($fst); $(set.insert($v);)* set }); } /// Counts the number of values passed to it. #[macro_export] macro_rules! count { () => (0); ($fst:expr) => (1); ($fst:expr, $snd:expr) => (2); ($fst:expr, $snd:expr $(, $v:expr)*) => (1 + count!($snd $(, $v)*)); }