struct_scheme_derive_macros/
lib.rs1use proc_macro::TokenStream;
2use std::fmt::{Debug, Display};
3use quote::quote;
4use syn;
5
6#[proc_macro_derive(StructScheme)]
7pub fn struct_scheme_macro_derive(input: TokenStream) -> TokenStream {
8 let ast = syn::parse(input).unwrap();
9 impl_struct_scheme_macro(&ast)
10}
11
12
13fn impl_struct_scheme_macro(ast: &syn::DeriveInput) -> TokenStream {
14 let name = &ast.ident;
15 let data = format!("{:#?}", &ast);
16 let gen = quote! {
17 impl TraitStructScheme for #name {
18 fn get_scheme() -> String {
19 return #data.to_string();
20 }
21 }
22 };
23 gen.into()
24}