Macro getter

Source
macro_rules! getter {
    ($($call:ident$(.$field:ident)?<$out:ty>),* $(,)?) => { ... };
    ($via:ident::<[$($call:ident$(.$field:ident)?<$out:ty>),* $(,)?]>) => { ... };
    ($($call:ident$(.$field:ident)?),* $(,)? => $out:ty) => { ... };
    ($via:ident::<[$($call:ident$(.$field:ident)?),* $(,)?]> => $out:ty) => { ... };
    (@impl $call:ident<$out:ty>) => { ... };
    (@impl $via:ident::$call:ident<$out:ty>) => { ... };
    (@impl $call:ident.$field:ident<$out:ty>) => { ... };
    (@impl $via:ident::$call:ident.$field:ident<$out:ty>) => { ... };
}