use proc_macro::TokenStream; use quote::quote; use syn::Error; #[derive(Copy, Clone)] pub enum Kind { Enum, Match, Struct, Let, } pub fn emit(err: &Error, kind: Kind, output: TokenStream) -> TokenStream { let err = err.to_compile_error(); let output = proc_macro2::TokenStream::from(output); let expanded = match kind { Kind::Enum | Kind::Let | Kind::Struct => quote!(#err #output), Kind::Match => quote!({ #err #output }), }; TokenStream::from(expanded) }