22 lines
No EOL
432 B
Rust
22 lines
No EOL
432 B
Rust
use quote::quote;
|
|
use syn::{parse_macro_input, ItemFn};
|
|
|
|
pub fn pin(_attr: proc_macro::TokenStream, item: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
let input = parse_macro_input!(item as ItemFn);
|
|
|
|
let attrs = &input.attrs;
|
|
let vis = &input.vis;
|
|
let sig = &input.sig;
|
|
let body = &input.block;
|
|
|
|
let result = quote! {
|
|
#(#attrs)*
|
|
#vis #sig {
|
|
Box::pin(async move {
|
|
#body
|
|
}).await
|
|
}
|
|
};
|
|
|
|
result.into()
|
|
} |