#[macro_export]
macro_rules! min {
($x: expr) => ($x);
($x: expr, $($z: expr),+) => (::std::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)*));
}