axum_error_object/
error.rs1use axum::Json;
2use axum::http::StatusCode;
3use axum::response::IntoResponse;
4use serde::{Deserialize, Serialize};
5
6use crate::ErrorResponse;
7
8#[derive(Debug, Serialize, Deserialize)]
9pub struct ErrorObject<E = ()> {
10 #[serde(skip)]
11 pub status: StatusCode,
12
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub title: Option<String>,
15
16 #[serde(flatten)]
17 pub error: E,
18}
19
20impl<E> From<ErrorObject<E>> for ErrorResponse
21where
22 E: Serialize,
23{
24 fn from(value: ErrorObject<E>) -> Self {
25 let response = (value.status, Json(value)).into_response();
26
27 ErrorResponse::from_response(response)
28 }
29}