// node_macro/src/lib.rs
extern crate proc_macro;

use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, DeriveInput};

#[proc_macro_derive(IntoNode)]
pub fn into_node_derive(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    let name = input.ident;
    
    let expanded = quote! {
        impl IntoNode for #name {
            fn into_node(self) -> Node {
                Node::#name(self)
            }
        }
    };
    
    TokenStream::from(expanded)
}