use axum::{ http::StatusCode, response::{IntoResponse, Response}, }; pub struct AppError { pub error: anyhow::Error, pub status_code: StatusCode, } impl AppError { pub fn new(error: anyhow::Error, status_code: StatusCode) -> Self { Self { error, status_code } } } impl IntoResponse for AppError { fn into_response(self) -> Response { ( self.status_code, format!("Something went wrong: {}", self.error), ) .into_response() } } impl<E> From<E> for AppError where E: Into<anyhow::Error>, { fn from(err: E) -> Self { Self::new(err.into(), StatusCode::INTERNAL_SERVER_ERROR) } }