sendwrap_fn/
sendwrap_fn.rs1#[macro_export]
19macro_rules! sendwrap_fn {
20 (move |$($param:ident : $ty:ty),*| $($content:tt)*) => {
21 {
22 let wrapped = $crate::__private::SendWrapper::new(move |$($param : $ty),*| $($content)*);
23
24 move |$($param : $ty),*| wrapped($($param),*)
25 }
26 };
27
28 (once move |$($param:ident : $ty:ty),*| $($content:tt)*) => {
29 {
30 let wrapped = $crate::__private::SendWrapper::new(move |$($param : $ty),*| $($content)*);
31
32 move |$($param : $ty),*| {
33 let inner = wrapped.take();
34 inner($($param),*)
35 }
36 }
37 };
38
39 (move |$($param:ident),*| $($content:tt)*) => {
40 {
41 let wrapped = $crate::__private::SendWrapper::new(move |$($param),*| $($content)*);
42
43 move |$($param),*| wrapped($($param),*)
44 }
45 };
46
47 (once move |$($param:ident),*| $($content:tt)*) => {
48 {
49 let wrapped = $crate::__private::SendWrapper::new(move |$($param),*| $($content)*);
50
51 move |$($param),*| {
52 let inner = wrapped.take();
53 inner($($param),*)
54 }
55 }
56 };
57
58 (once move || $($content:tt)*) => {
59 $crate::sendwrap_fn!(once move | | $($content)*)
60 };
61
62 (move || $($content:tt)*) => {
63 $crate::sendwrap_fn!(move | | $($content)*)
64 };
65}