macro_rules! const_ft {
(pub fn $fn_name:ident($($arg:ident : $typ:ty),*) $body: block ) => { ... };
(pub fn $fn_name:ident($($arg:ident : $typ:ty),*) -> $ret: ty $body: block ) => { ... };
(fn $fn_name:ident($($arg:ident : $typ:ty),*) -> $ret: ty $body: block ) => { ... };
(fn $fn_name:ident($($arg:ident : $typ:ty),*) $body: block ) => { ... };
(pub($scope:ident) fn $fn_name:ident($($arg:ident : $typ:ty),*) -> $ret:ty $body:block ) => { ... };
(pub($scope:ident) fn $fn_name:ident($($arg:ident : $typ:ty),*) $body:block ) => { ... };
(fn $fn_name:ident( $self_:ident, $($arg:ident : $typ:ty),*) $body: block ) => { ... };
(fn $fn_name:ident($self_:ident, $($arg:ident : $typ:ty),*) -> $ret: ty $body: block ) => { ... };
(pub fn $fn_name:ident(&$self_: ident, $($arg:ident : $typ:ty),*) -> $ret: ty $body: block ) => { ... };
(pub fn $fn_name:ident(&$self_: ident, $($arg:ident : $typ:ty),*) -> $body: block ) => { ... };
(pub fn $fn_name:ident(&$self_: ident) -> $ret: ty $body: block ) => { ... };
(pub fn $fn_name:ident(&$self_: ident) -> $body: block ) => { ... };
}