#[macro_export(local_inner_macros)]
macro_rules! hmap {
(@single $($x:tt)*) => (());
(@count $($rest:expr),*) => (<[()]>::len(&[$(hmap!(@single $rest)),*]));
($($key:expr => $value:expr),* $(,)?) => {
{
let _cap = hmap!(@count $($key),*);
let mut _map = ::std::collections::HashMap::with_capacity(_cap);
$(
let _ = _map.insert($key.into(), $value.into());
)*
_map
}
};
}
#[macro_export(local_inner_macros)]
macro_rules! hset {
(@single $($x:tt)*) => (());
(@count $($rest:expr),*) => (<[()]>::len(&[$(hset!(@single $rest)),*]));
($($key:expr,)+) => { hset!($($key),+) };
($($key:expr),*) => {
{
let _cap = hset!(@count $($key),*);
let mut _set = ::std::collections::HashSet::with_capacity(_cap);
$(
let _ = _set.insert($key.into());
)*
_set
}
};
}
#[macro_export(local_inner_macros)]
macro_rules! bmap {
( $($key:expr => $value:expr),* $(,)?) => {
{
let mut _map = ::std::collections::BTreeMap::new();
$(
let _ = _map.insert($key.into(), $value.into());
)*
_map
}
};
}
#[macro_export(local_inner_macros)]
macro_rules! bset {
( $($key:expr),* $(,)? ) => {
{
let mut _set = ::std::collections::BTreeSet::new();
$(
_set.insert($key.into());
)*
_set
}
};
}
#[macro_export(local_inner_macros)]
macro_rules! vecd {
( $($key:expr),* $(,)? ) => {
::std::collections::VecDeque::from(::std::vec![$(
$key.into()
),*])
}
}
#[macro_export(local_inner_macros)]
macro_rules! list {
( $($key:expr),* $(,)? ) => {
{
let mut _lst = ::std::collections::LinkedList::new();
$(
_lst.push_back($key.into());
)*
_lst
}
};
}
#[macro_export(local_inner_macros)]
macro_rules! heap {
( $($key:expr),* $(,)? ) => {
{
let mut _heap = ::std::collections::BinaryHeap::new();
$(
_heap.push($key.into());
)*
_heap
}
};
}