macro_rules! variadic_closure {
( fn $fn:ident ( ) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty
) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty,
$arg2: ident : $argty2:ty
) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty,
$arg2: ident : $argty2:ty,
$arg3: ident : $argty3:ty
) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty,
$arg2: ident : $argty2:ty,
$arg3: ident : $argty3:ty,
$arg4: ident : $argty4:ty
) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty,
$arg2: ident : $argty2:ty,
$arg3: ident : $argty3:ty,
$arg4: ident : $argty4:ty,
$arg5: ident : $argty5:ty
) -> $ret:ty $body:block ) => { ... };
( fn $fn:ident (
$arg1: ident : $argty1:ty,
$arg2: ident : $argty2:ty,
$arg3: ident : $argty3:ty,
$arg4: ident : $argty4:ty,
$arg5: ident : $argty5:ty,
$arg6: ident : $argty6:ty
) -> $ret:ty $body:block ) => { ... };
}