1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#[macro_export] macro_rules! logf { (@single $($x:tt)*) => (()); (@count $($rest:expr),*) => (<[()]>::len(&[$(logf!(@single $rest)),*])); ($($key:expr => $value:expr,)+) => { logf!($($key => $value),+) }; ($($key:expr => $value:expr),*) => { { let cap = logf!(@count $($key),*); let mut map = ::std::collections::HashMap::with_capacity(cap); $( let _ = map.insert($key.into(), json!($value)); )* map } }; }