Macro map

Source
macro_rules! map {
    {{$($tt:tt)*}} => { ... };
    (@field $map:expr, $field:ident $(, $($remain:tt)* )?) => { ... };
    (@field $map:expr, $field:ident: Map         {$($tt:tt)*} $(, $($remain:tt)* )?) => { ... };
    (@field $map:expr, $field:ident: $struct:ty  {$($tt:tt)*} $(, $($remain:tt)* )?) => { ... };
    (@field $map:expr, $field:ident: $value:expr $(, $($remain:tt)* )?) => { ... };
    (@field $map:expr $(,)?) => { ... };
}