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
29
30
31
32
33
/// Macro for creating a [`ContiguousMap`](crate::ContiguousMap).
///
/// ## Example
/// ```
/// use contiguous_map::cmap;
///
/// let map = cmap!(1 => 2);
/// assert_eq!(1, map.len());
///
/// let map = cmap!(
///     1 => 2;
///     5 => 1, 2, 3;
///     9 => 7, 8;
/// );
/// assert_eq!(&[1, 2, 3], map.get_slice(5..).unwrap());
/// ```
#[macro_export]
macro_rules! cmap {
    ($($key:expr => $($value:expr),+ $(,)?);* $(;)?) => {
        {
            let mut _map = $crate::ContiguousMap::new();
            $(
                let mut _key = ::std::option::Option::Some($key);
                $(
                    let k = _key.unwrap();
                    _key = <_ as $crate::Key>::add_one(&k);
                    _map.insert(k, $value);
                )+
            )*
            _map
        }
    };
}