web_component/closure/
mod.rs1#[macro_export]
2macro_rules! capture {
3 ($($name:ident),* => $body:expr) => {
4 {
5 $(let $name = $name.clone();)*
6 $body
7 }
8 };
9}
10
11#[macro_export]
12macro_rules! capture_async {
13 ($($name:ident),* => async move $body:block) => {
14 {
15 $(let $name = $name.clone();)*
16 async move { $body }
17 }
18 };
19}
20
21#[macro_export]
22macro_rules! event {
23 ($($name:ident),* => async move |$input:ident: $type_:ty| $body:block) => {
24 {
25 $(let $name = $name.clone();)*
26 move |$input: $type_| {
27 $(let $name = $name.clone();)*
28 $crate::prelude::wasm_bindgen_futures::spawn_local(async move {
29 $body
30 })
31 }
32 }
33 };
34 ($($name:ident),* => async move $body:block) => {
35 {
36 $(let $name = $name.clone();)*
37 move |_| {
38 $(let $name = $name.clone();)*
39 $crate::prelude::wasm_bindgen_futures::spawn_local(async move {
40 $body
41 })
42 }
43 }
44 };
45}