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 34 35 36 37 38 39 40 41
#[macro_export] macro_rules! debug { ($($e:expr),+) => {{ let vec = file!().split("\\").collect::<Vec<_>>(); let file = vec.last().unwrap(); println!("[{}:{}] {}", file, line!(), debug_format!($($e),+)); }}; } macro_rules! debug_format { ($e:expr) => {{ format!("{:?}", $e) }}; ($e:expr, $($x:expr),+) => {{ format!("{:?}, {}", $e, debug_format!($($x),+)) }}; } macro_rules! log{ ($($x:expr),+) => {{ println!($($x),+) }}; } macro_rules! join_comma{ ($e:expr) => {{ format!("{}", $e) }}; ($e:expr, $($x:expr),+) => {{ format!("{}, {}", $e, join_comma!($($x),+)) }}; } macro_rules! expect { () => {{ format!("[{}:{}]", file!(), line!()) }}; ($($x:expr),+) => {{ format!("{:?}, {}", $e, join_comma!($($x),+)) }}; }