use std::error; use axum::{ http::StatusCode, response::{IntoResponse, Response}, }; // I'm making an effort to avoid `anyhow` here, as that crate is _enormously_ // complex (though very usable). We don't need to be overly careful about // allocations on errors in this app, so this is fine for most "general // failure" cases. type BoxedError = Box; // Returns a 500 Internal Server Error to the client. Meant to be used via the // `?` operator; _does not_ return the originating error to the client. #[derive(Debug)] pub struct InternalError; impl From for InternalError where E: Into, { fn from(_: E) -> Self { // At some point it may be useful for this to record the originating // error so that it can be logged… -oj Self } } impl IntoResponse for InternalError { fn into_response(self) -> Response { (StatusCode::INTERNAL_SERVER_ERROR, "internal server error").into_response() } }