1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#[macro_export]
macro_rules! min {
($x: expr) => ($x);
($x: expr, $($z: expr),+) => (::core::cmp::min($x, min!($($z),*)));
}
#[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
});
}
#[macro_export]
macro_rules! count {
() => (0);
($fst:expr) => (1);
($fst:expr, $snd:expr) => (2);
($fst:expr, $snd:expr $(, $v:expr)*) => (1 + count!($snd $(, $v)*));
}