use proc_macro::{Ident, Span, TokenStream, TokenTree}; #[proc_macro] pub fn concat_idents(input: TokenStream) -> TokenStream { let mut buffer = String::new(); for token in input { if let TokenTree::Ident(identifier) = token { buffer.push_str(&identifier.to_string()); } } let mut stream = TokenStream::new(); stream.extend([Ident::new(&buffer, Span::call_site())]); stream }