1#![doc = include_str!("../README.md")]
2#![deny(missing_docs)]
3
4use proc_macro::TokenStream;
5use quote::quote;
6use syn::{parse_macro_input, ExprClosure};
7
8#[proc_macro]
10pub fn async_closure(input: TokenStream) -> TokenStream {
11 let input = parse_macro_input!(input as ExprClosure);
12 let body = input.body;
13 let inputs = input.inputs;
14 let mova = input.capture;
15 let expanded = quote! {{
16 use std::future::IntoFuture;
17 #mova |#inputs| Box::pin(async move { #body })
18 }};
19 expanded.into()
20}