derive_nodestate/
lib.rs

1extern crate proc_macro;
2extern crate quote;
3extern crate syn;
4
5use proc_macro::TokenStream;
6use quote::quote;
7use syn::{DeriveInput, parse_macro_input};
8
9#[proc_macro_derive(NodeState)]
10pub fn derive(input: TokenStream) -> TokenStream {
11    let input = parse_macro_input!(input as DeriveInput);
12    let target = input.ident;
13
14    let expand = quote! {
15        impl NodeState for #target {
16            fn into_any(self: Box<Self>) -> Box<dyn std::any::Any> { self }
17        }
18    };
19    TokenStream::from(expand)
20}