externcrate proc_macro;usecrate::proc_macro::TokenStream;usequote::quote;usesyn::{parse_macro_input, ItemFn};/// Makes a synchronous function asynchronous using futures-cputask
////// Note: this function may not take any non-static references
/// Member methods have to take an `Arc<Self>`
#[proc_macro_attribute]pubfnasync_task(_attr: TokenStream, item: TokenStream)-> TokenStream{let input =parse_macro_input!(item as ItemFn);let attrs = input.attrs;let vis = input.vis;let sig = input.sig;let block = input.block;let output =quote!{#(#attrs)*#vis async #sig {futures_cputask::run_task(move||{#block}).await
}};
output.into()}