macro_rules! func_def { ( $name:expr ; $return_type:expr ; $($arg_name:expr => $arg_val:expr),+ $(,)* => $($dfl_name:expr => $dfl_val:expr),* $(,)* => $collect_type:expr ; $exec:expr ) => { ... }; ( $name:expr ; $return_type:expr ; => $($dfl_name:expr => $dfl_val:expr),* $(,)* => $collect_type:expr ; $exec:expr ) => { ... }; }