uringy_macros/
lib.rs

1use proc_macro::TokenStream;
2
3use quote::quote;
4use syn::{parse_macro_input, ItemFn};
5
6#[proc_macro_attribute]
7pub fn start(_attr: TokenStream, item: TokenStream) -> TokenStream {
8    let item = parse_macro_input!(item as ItemFn);
9
10    let attributes = &item.attrs;
11    let visibility = &item.vis;
12    let signature = &item.sig;
13    let body = &item.block;
14
15    let result = quote! {
16        #(#attributes)*
17        #visibility #signature {
18            ::uringy::fiber::start(move || #body).unwrap();
19        }
20    };
21
22    result.into()
23}