hyprland_macros/
lib.rs

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/// Creates a async closure
9#[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}