Macro transducer

Source
macro_rules! transducer {
    (@check $e:expr) => { ... };
    (@inner ($($t:tt)*)) => { ... };
    (@inner => $f:expr, $g:expr, $h:expr $(,)?) => { ... };
    (@inner = $e:expr) => { ... };
    (@inner <= $e:expr) => { ... };
    (@inner >= $e:expr) => { ... };
    (@inner < $e:expr) => { ... };
    (@inner > $e:expr) => { ... };
    (@inner !<= $e:expr) => { ... };
    (@inner !>= $e:expr) => { ... };
    (@inner !< $e:expr) => { ... };
    (@inner !> $e:expr) => { ... };
    (@inner $e:ident =) => { ... };
    (@inner $e:ident <=) => { ... };
    (@inner $e:ident >=) => { ... };
    (@inner $e:ident <) => { ... };
    (@inner $e:ident >) => { ... };
    (@inner $e:ident !<=) => { ... };
    (@inner $e:ident !>=) => { ... };
    (@inner $e:ident !<) => { ... };
    (@inner $e:ident !>) => { ... };
    (@inner =) => { ... };
    (@inner <=) => { ... };
    (@inner >=) => { ... };
    (@inner <) => { ... };
    (@inner >) => { ... };
    (@inner !<=) => { ... };
    (@inner !>=) => { ... };
    (@inner !<) => { ... };
    (@inner !>) => { ... };
    (@inner @id) => { ... };
    (@inner @it $e:expr) => { ... };
    (@inner @map $f:expr) => { ... };
    (@inner @fmap $f:expr) => { ... };
    (@inner @seq $e:expr) => { ... };
    (@inner @rseq $e:expr) => { ... };
    (@inner @<$t:ty>) => { ... };
    (@inner @) => { ... };
    (@inner $($t:tt)*) => { ... };
    (@inter [$([$($a:tt)*])*]) => { ... };
    (@inter [] [$($b:tt)*]) => { ... };
    (@inter [$($a:tt)*] [$($b:tt)*]) => { ... };
    (@inter [$($a:tt)*] [$($b:tt)*] & $($t:tt)*) => { ... };
    (@inter [$($a:tt)*] [$($b:tt)*] $op:tt $($t:tt)*) => { ... };
    (@prod [$([$($a:tt)*])*]) => { ... };
    (@prod [] [$($b:tt)*]) => { ... };
    (@prod [$($a:tt)*] [$($b:tt)*]) => { ... };
    (@prod [$($a:tt)*] [$($b:tt)*] * $($t:tt)*) => { ... };
    (@prod [$($a:tt)*] [$($b:tt)*] $op:tt $($t:tt)*) => { ... };
    (@chain [$([$($a:tt)*])*]) => { ... };
    (@chain [] [$($b:tt)*]) => { ... };
    (@chain [$($a:tt)*] [$($b:tt)*]) => { ... };
    (@chain [$($a:tt)*] [$($b:tt)*] . $($t:tt)*) => { ... };
    (@chain [$($a:tt)*] [$($b:tt)*] $op:tt $($t:tt)*) => { ... };
    (@id $($t:tt)*) => { ... };
    (@it $($t:tt)*) => { ... };
    (@map $($t:tt)*) => { ... };
    (@fmap $($t:tt)*) => { ... };
    (@seq $($t:tt)*) => { ... };
    (@rseq $($t:tt)*) => { ... };
    (@$tag:ident $($t:tt)*) => { ... };
    ($($t:tt)*) => { ... };
}
Expand description

build transducer