lambda_runtime_errors_derive/
lib.rs

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