#[macro_export]
macro_rules! map {
{ } => {
{
::std::collections::HashMap::new()
}
};
{ owned: $($key:expr => $value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::HashMap::new();
$(
m.insert($key.to_owned(), $value.to_owned());
)+
m
}
};
{ $($key:expr => $value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::HashMap::new();
$(
m.insert($key, $value);
)+
m
}
}
}
#[macro_export]
macro_rules! set {
{ } => {
{
::std::collections::HashSet::new()
}
};
{ owned: $($value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::HashSet::new();
$(
m.insert($value.to_owned());
)+
m
}
};
{ $($value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::HashSet::new();
$(
m.insert($value);
)+
m
}
}
}
#[macro_export]
macro_rules! bmap {
{ } => {
{
::std::collections::BTreeMap::new()
}
};
{ owned: $($key:expr => $value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::BTreeMap::new();
$(
m.insert($key.to_owned(), $value.to_owned());
)+
m
}
};
{ $($key:expr => $value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::BTreeMap::new();
$(
m.insert($key, $value);
)+
m
}
}
}
#[macro_export]
macro_rules! bset {
{ } => {
{
::std::collections::BTreeSet::new()
}
};
{ owned: $($value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::BTreeSet::new();
$(
m.insert($value.to_owned());
)+
m
}
};
{ $($value:expr),+ $(,)? } => {
{
let mut m = ::std::collections::BTreeSet::new();
$(
m.insert($value);
)+
m
}
}
}
#[macro_export]
macro_rules! list {
{ } => {
{
::std::collections::LinkedList::new()
}
};
{ owned: $($value:expr)=>+ } => {
{
let mut m = ::std::collections::LinkedList::new();
$(
m.push_back($value.to_owned());
)+
m
}
};
{ $($value:expr)=>+ } => {
{
let mut m = ::std::collections::LinkedList::new();
$(
m.push_back($value);
)+
m
}
}
}