macro_rules! adv_fn {
{
$(#[$attr:meta])*
$vis:vis fn $func_name:ident ( $arg_name:ident : [[$($arg_dim:tt)*]] $( , $extra_arg:ident : $extra_type:ty )* $(,)? ) -> [[$($result_dim:tt)*]] {
$($tt:tt)*
}
} => { ... };
{
$(#[$attr:meta])*
$vis:vis fn $func_name:ident ( $($arg_name:ident : $arg_type:ty $(,)?)* ) $(-> $return_type:ty)? {
$($tt:tt)*
}
} => { ... };
}
Define a function and automatically collect metadata