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}