graphlib/
macros.rs

1/// Find the minimum of a set of numbers
2#[macro_export]
3macro_rules! min {
4    ($x: expr) => ($x);
5    ($x: expr, $($z: expr),+) => (::core::cmp::min($x, min!($($z),*)));
6}
7
8/// Returns a HashSet containing the passed values.
9#[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/// Counts the number of values passed to it.
26#[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}