mvrocketlib_macro/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{parse_macro_input, ItemFn};
4#[proc_macro_attribute]
5pub fn main(_attrs: TokenStream, input: TokenStream) -> TokenStream {
6    let input_fn = parse_macro_input!(input as ItemFn);
7
8    let fn_name = &input_fn.sig.ident;
9
10    let output = quote! {
11        #input_fn
12
13        #[no_mangle]
14        pub extern "C" fn mvrocket_launch() {
15            #fn_name();
16        }
17    };
18
19    TokenStream::from(output)
20}