1#[macro_export]
7macro_rules! future_fn {
8 ($($var:ident),*, { $($closure_body:tt)* }) => {
9 || {
10 let ($($var),*) = ($($var.clone()),*);
11 async move {
12 $($closure_body)*
13 }
14 }
15 };
16 ($($var:ident),*, |$( $closure_param:ident $(: $closure_param_ty:ty)? ),*| { $($closure_body:tt)* }) => {
17 {
18 let ($($var),*) = ($($var.clone()),*);
19 move |$( $closure_param $(: $closure_param_ty)? ),*| {
20 let ($($var),*) = ($($var.clone()),*);
21 async move {
22 $($closure_body)*
23 }
24 }
25 }
26 };
27}