1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use proc_macro2::TokenStream; use quote::quote; use synstructure::decl_derive; decl_derive!([LambdaErrorExt, attributes()] => lambda_error_derive); fn lambda_error_derive(s: synstructure::Structure) -> TokenStream { let name = format!("{}", s.ast().ident); let err_impl = s.gen_impl(quote! { use lambda_runtime_errors::LambdaErrorExt; gen impl LambdaErrorExt for @Self { fn error_type(&self) -> &str { #name } } }); (quote! { #err_impl }) }