macro_rules! match_scenario_algorithm {
(
($algorithm:expr, $scenario:expr => $algscen:ident : $algscenty:ident) {
$($(#[$algmeta:meta])* $algpat:pat => $algcode:block),*
<=>
$($(#[$scenmeta:meta])* $scenpat:pat => $scencode:block => $scenty:ident),*
}
) => { ... };
(
impl ($algorithm:expr, $scenario:expr => $algscen:ident : $algscenty:ident) {
$(#[$algmeta:meta])* $algpat:pat => $algcode:block,
$($(#[$algmetarem:meta])* $algpatrem:pat => $algcoderem:block),+
<=>
$($(#[$scenmeta:meta])* $scenpat:pat => $scencode:block => $scenty:ident),*
<=>
$($tail:tt)*
}
) => { ... };
(
impl ($algorithm:expr, $scenario:expr => $algscen:ident : $algscenty:ident) {
$(#[$algmeta:meta])* $algpat:pat => $algcode:block
<=>
$($(#[$scenmeta:meta])* $scenpat:pat => $scencode:block => $scenty:ident),*
<=>
$($tail:tt)*
}
) => { ... };
}