macro_rules! closure {
(move || $f:expr) => { ... };
(move |$($arg:ident $(: $t:ty)*),*| $f:expr) => { ... };
(move |$($arg:ident $(: $t:ty)*),*| $f:expr) => { ... };
(|| $f:expr) => { ... };
(|$($arg:ident),*| $f:expr) => { ... };
(@inner || $f:expr) => { ... };
(@inner |$($arg:ident),*| $f:expr) => { ... };
(@inner move $var:ident $($tail:tt)*) => { ... };
(@inner ref mut $var:ident $($tail:tt)*) => { ... };
(@inner ref $var:ident $($tail:tt)*) => { ... };
(@inner clone $var:ident $($tail:tt)*) => { ... };
(@inner , $($tail:tt)*) => { ... };
($($args:tt)*) => { ... };
}