macro_rules! btree {
    () => { ... };
    ($(map)? of $key_type:ty => $value_type:ty) => { ... };
    ($($key:expr => $value:expr),* $(,)?) => { ... };
    ($(map)? of $key_type:ty => $value_type:ty { $($key:expr => $value:expr),* $(,)? }) => { ... };
    ($(set)? of $value_type:ty) => { ... };
    ($($value:expr),* $(,)?) => { ... };
    ($(set)? of $value_type:ty { $($value:expr),* $(,)? }) => { ... };
}
Expand description

Macro for initializing both BTreeMaps and BTreeSets. It can infer both type of collection and types of entries but you can provide explicit type annotations.

use std::collections::{BTreeMap, BTreeSet};
use collection_literals::btree;

let set = btree! { set of &str { "Hi", "Hoi" } };
let map = btree! { map of u8 => char {
    0 => '0',
    1 => '1',
    2 => '2',
}};

assert_eq!(set, BTreeSet::from(["Hi", "Hoi"]));
assert_eq!(map, BTreeMap::from([(0, '0'), (1, '1'), (2, '2')]));


assert_eq!(btree! { 88, 99 }, btree! { set of i32 { 88, 99 } });
assert_eq!(btree! { 88 => 99 }, btree! { map of i32 => i32 { 88 => 99 } });