1#[macro_export]
3macro_rules! min {
4 ($x: expr) => ($x);
5 ($x: expr, $($z: expr),+) => (::core::cmp::min($x, min!($($z),*)));
6}
7
8#[macro_export]
10macro_rules! set {
11 () => ({
12 HashSet::new()
13 });
14
15 ($fst:expr $(, $v:expr)*) => ({
16 let mut set = HashSet::with_capacity(count!($fst $(, $v)*));
17
18 set.insert($fst);
19 $(set.insert($v);)*
20
21 set
22 });
23}
24
25#[macro_export]
27macro_rules! count {
28 () => (0);
29 ($fst:expr) => (1);
30 ($fst:expr, $snd:expr) => (2);
31 ($fst:expr, $snd:expr $(, $v:expr)*) => (1 + count!($snd $(, $v)*));
32}