#[macro_export]
macro_rules! wiserone {
($($tt:tt)*) => {
$crate::parse!($($tt)*)
};
}
#[macro_export]
macro_rules! wiserone_print {
($($arg:tt)*) => {
println!("{}", format_args!("{}", $($arg)*));
};
}
#[macro_export]
macro_rules! wiserone_vec {
($($elem:expr),*) => {{
let mut v = Vec::new();
$(v.push($elem);)*
v
}};
}
#[macro_export]
macro_rules! wiserone_map {
($($key:expr => $value:expr),*) => {{
use std::collections::HashMap;
let mut m = HashMap::new();
$(m.insert($key, $value);)*
m
}};
}
#[macro_export]
macro_rules! wiserone_assert {
($($arg:tt)*) => {
if !$($arg)* {
panic!("Assertion failed!");
}
};
}
#[macro_export]
macro_rules! wiserone_min {
($($x:expr),*) => {{
let mut min = $($x)*;
$(if min > $x { min = $x; })*
min
}};
}
#[macro_export]
macro_rules! wiserone_max {
($($x:expr),*) => {{
let mut max = $($x)*;
$(if max < $x { max = $x; })*
max
}};
}
#[macro_export]
macro_rules! wiserone_split {
($s:expr) => {{
let mut v = Vec::new();
for w in $s.split_whitespace() {
v.push(w.to_string());
}
v
}};
}
#[macro_export]
macro_rules! wiserone_join {
($($s:expr),*) => {{
let mut s = String::new();
$(
s += &$s;
)*
s
}};
}
#[macro_export]
macro_rules! wiserone_print_vec {
($($v:expr),*) => {{
for v in $($v),* {
println!("{}", v);
}
}};
}