znap_syn/codegen/error_code/
mod.rs1use 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}