Macro pipe
Source macro_rules! pipe {
($var:tt |> $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt |> $namespace1:ident :: $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt |> $namespace1:ident :: < $($types: tt ),+ > :: $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt |> $namespace1:ident :: $namespace2:ident :: $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt |> $namespace1:ident :: $namespace2:ident :: $namespace3:ident :: $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt |> $namespace1:ident :: $namespace2:ident :: $namespace3:ident :: $namespace4:ident :: $function: ident($($params: expr),*) $($calls:tt)*) => { ... };
($var:tt . $function: ident $( :: < $($types: tt $(< $types2: tt >)? ),* > )? ( $($params: expr),* ) $($calls:tt)*) => { ... };
($var:tt . $field: ident $($calls:tt)* ) => { ... };
($var:tt) => { ... };
}