use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, DeriveInput}; pub fn invoke(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); let name = input.ident; let expanded = quote! { #[automatically_derived] impl crate::view::__internal::CustomComponent for #name where #name : crate::view::GetTemplate {} #[automatically_derived] impl crate::view::__internal::IntoNode for #name where #name : crate::view::GetTemplate { type Node = crate::view::__internal::CustomComponentWrapper; fn into_node(self) -> Self::Node { crate::view::__internal::CustomComponentWrapper::new(self) } } }; expanded.into() }