Macro impl_enum_dispatch
Source macro_rules! impl_enum_dispatch {
($enum_name:ident<$lifetime:lifetime>, $($variant:ident),*; $fn_name:ident(&$self_lifetime:lifetime self) -> $ret:ty) => { ... };
($enum_name:ident, $($variant:ident),*; $fn_name:ident(&self, $($arg:ident : $arg_ty:ty),+) -> $ret:ty) => { ... };
($enum_name:ident, $($variant:ident),*; $fn_name:ident(&self) -> $ret:ty) => { ... };
($enum_name:ident, $($variant:ident),*; $fn_name:ident(&mut self, $($arg:ident : $arg_ty:ty),+) -> $ret:ty) => { ... };
($enum_name:ident, $($variant:ident),*; $fn_name:ident(&mut self) -> $ret:ty) => { ... };
}