Testing procedural macros

This commit is contained in:
2024-12-02 18:21:48 +01:00
parent c88e087ff8
commit be77ab9361
7 changed files with 83 additions and 6 deletions

28
aweblib_macros/src/lib.rs Normal file
View File

@@ -0,0 +1,28 @@
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Data, DataStruct};
#[proc_macro_derive(Getter)]
pub fn getter(item: TokenStream) -> TokenStream {
let input = parse_macro_input!(item as syn::DeriveInput);
let ident = input.ident;
let mut quote = quote! {
println!("Test");
};
if let Data::Struct(DataStruct { fields, .. }) = input.data {
for field in fields {
let name = field.ident.unwrap();
quote.extend(quote! {
println!("{}",stringify!(#name));
})
}
}
quote!(
impl #ident {
fn get() {
#quote
}
}
)
.into()
}