use crate::BoxError; use std::{error::Error as StdError, fmt}; /// Errors that can happen when using axum. #[derive(Debug)] pub struct Error { inner: BoxError, } impl Error { /// Create a new `Error` from a boxable error. pub fn new(error: impl Into) -> Self { Self { inner: error.into(), } } /// Convert an `Error` back into the underlying boxed trait object. pub fn into_inner(self) -> BoxError { self.inner } } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { self.inner.fmt(f) } } impl StdError for Error { fn source(&self) -> Option<&(dyn StdError + 'static)> { Some(&*self.inner) } }