Files
aweblib/aweblib_macros/src/lib.rs
2024-12-02 18:21:48 +01:00

29 lines
709 B
Rust

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()
}