#[macro_export]
macro_rules! clone {
( $( $var:ident ),* => async move $body:block ) => {{
$( let $var = $var.clone(); )*
async move $body
}};
( $( $var:ident ),* => $body:block ) => {{
$( let $var = $var.clone(); )*
$body
}};
( $( $var:ident ),* => move |$( $arg:ident $(: $ty:ty)? ),*| async move $body:block ) => {{
$( let $var = $var.clone(); )*
move |$( $arg $(: $ty)? ),*| {
$( let $var = $var.clone(); )*
async move $body
}
}};
( $( $var:ident ),* => |$( $arg:ident $(: $ty:ty)? ),*| async move $body:block ) => {{
$( let $var = $var.clone(); )*
move |$( $arg $(: $ty)? ),*| {
$( let $var = $var.clone(); )*
async move $body
}
}};
( $( $var:ident ),* => move |$( $arg:ident $(: $ty:ty)? ),*| $body:block ) => {{
$( let $var = $var.clone(); )*
move |$( $arg $(: $ty)? ),*| {
$( let $var = $var.clone(); )*
$body
}
}};
( $( $var:ident ),* => |$( $arg:ident $(: $ty:ty)? ),*| $body:block ) => {{
$( let $var = $var.clone(); )*
move |$( $arg $(: $ty)? ),*| {
$( let $var = $var.clone(); )*
$body
}
}};
}