macro_rules! split_cross {
    {$fun:ident <= $($item:tt)*} => { ... };
    {$fun:ident ($($first:tt)*) <= $($item:tt)*} => { ... };
    {$fun:ident ($($first:tt)*) ($($every:tt)*) <= $($item:tt)*} => { ... };
    {$fun:ident ($($first:tt)*) ($($every:tt)*) ($($current:tt)*) <= x $($item:tt)+} => { ... };
    {$fun:ident ($($first:tt)*) ($($every:tt)*) ($($current:tt)+) <= x } => { ... };
    {$fun:ident ($($first:tt)*) ($($every:tt)*) ($($current:tt)*) <= $next:tt $($item:tt)*} => { ... };
    {$fun:ident ($($first:tt)*) ($($every:tt)*) ($($current:tt)+) <= } => { ... };
    {$fun:ident ($($first:tt)*) () () <= } => { ... };
}
Expand description

run a macro on a list of lists after splitting the input