macro_rules! trace {
(
target : $target:expr, $($field:ident = $value:expr,)* $fmt:literal
$(, $($arg:expr),*)?
) => { ... };
(target : $target:expr, $fmt:literal $(, $($arg:expr),*)?) => { ... };
(target : $target:expr, $($arg:tt)*) => { ... };
($($arg:tt)*) => { ... };
}