znap_syn/codegen/error_code/
mod.rs

1use crate::ErrorEnum;
2use quote::quote;
3mod display_variant;
4mod name;
5
6pub fn generate(error_enum: &ErrorEnum) -> proc_macro2::TokenStream {
7    let error_name = &error_enum.name;
8    let display_variants = display_variant::generate(error_enum);
9    let name_variants = name::generate(error_enum);
10
11    quote! {
12        #name_variants
13        #display_variants
14
15        impl From<#error_name> for u32 {
16            fn from(e: #error_name) -> u32 {
17                e as u32
18            }
19        }
20
21        impl From<#error_name> for Error {
22            fn from(error_code: #error_name) -> Error {
23                Error::new(
24                    axum::http::StatusCode::BAD_REQUEST,
25                    error_code.name(),
26                    error_code.to_string(),
27                )
28            }
29        }
30    }
31}