struct_name_macro/lib.rs
1use proc_macro::TokenStream;
2use quote::quote;
3use syn::parse_macro_input;
4use syn::DeriveInput;
5
6#[proc_macro_derive(StructName)]
7pub fn derive_struct_name(item: TokenStream) -> TokenStream {
8 let ast = parse_macro_input!(item as DeriveInput);
9 let struct_name = &ast.ident;
10
11 let expanded = quote! {
12 impl struct_name::StructName for #struct_name {
13 fn struct_name() -> &'static str {
14 stringify!(#struct_name)
15 }
16 }
17 };
18 expanded.into()
19}