use std::borrow::Cow; #[derive(serde::Serialize)] pub struct ErrorResponse { pub error: Option>, } macro_rules! define_error_response { ($error:ty) => { impl crate::middleware::logging::GenericError for $error {} impl axum::response::IntoResponse for $error { fn into_response(self) -> axum::response::Response { let response = crate::endpoints::ErrorResponse { error: Some(self.to_string().into()), }; let mut response = (self.status_code(), axum::Json(response)).into_response(); response .extensions_mut() .insert::>(Box::new(self)); response } } }; } pub mod cargo_api; pub mod web_api;