struct_scheme_derive_macros/
lib.rs

1use 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}