mirror of
https://github.com/eyre-rs/eyre.git
synced 2025-09-30 14:32:13 +00:00
Move transparent wrapper errors to own module
This commit is contained in:
parent
303e1a08e7
commit
ba0b30790c
47
src/error.rs
47
src/error.rs
@ -1,4 +1,5 @@
|
|||||||
use crate::backtrace::Backtrace;
|
use crate::backtrace::Backtrace;
|
||||||
|
use crate::wrapper::{DisplayError, MessageError};
|
||||||
use crate::{Chain, Error};
|
use crate::{Chain, Error};
|
||||||
use std::any::TypeId;
|
use std::any::TypeId;
|
||||||
use std::error::Error as StdError;
|
use std::error::Error as StdError;
|
||||||
@ -641,52 +642,6 @@ pub(crate) struct ContextError<C, E> {
|
|||||||
pub error: E,
|
pub error: E,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(transparent)]
|
|
||||||
struct MessageError<M>(M);
|
|
||||||
|
|
||||||
impl<M> Debug for MessageError<M>
|
|
||||||
where
|
|
||||||
M: Display + Debug,
|
|
||||||
{
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
Debug::fmt(&self.0, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<M> Display for MessageError<M>
|
|
||||||
where
|
|
||||||
M: Display + Debug,
|
|
||||||
{
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
Display::fmt(&self.0, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<M> StdError for MessageError<M> where M: Display + Debug + 'static {}
|
|
||||||
|
|
||||||
#[repr(transparent)]
|
|
||||||
struct DisplayError<M>(M);
|
|
||||||
|
|
||||||
impl<M> Debug for DisplayError<M>
|
|
||||||
where
|
|
||||||
M: Display,
|
|
||||||
{
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
Display::fmt(&self.0, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<M> Display for DisplayError<M>
|
|
||||||
where
|
|
||||||
M: Display,
|
|
||||||
{
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
Display::fmt(&self.0, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<M> StdError for DisplayError<M> where M: Display + 'static {}
|
|
||||||
|
|
||||||
impl<E> ErrorImpl<E> {
|
impl<E> ErrorImpl<E> {
|
||||||
fn erase(&self) -> &ErrorImpl<()> {
|
fn erase(&self) -> &ErrorImpl<()> {
|
||||||
// Erase the concrete type of E but preserve the vtable in self.vtable
|
// Erase the concrete type of E but preserve the vtable in self.vtable
|
||||||
|
@ -175,6 +175,7 @@ mod error;
|
|||||||
mod fmt;
|
mod fmt;
|
||||||
mod kind;
|
mod kind;
|
||||||
mod macros;
|
mod macros;
|
||||||
|
mod wrapper;
|
||||||
|
|
||||||
#[cfg(not(feature = "std"))]
|
#[cfg(not(feature = "std"))]
|
||||||
compile_error!("no_std support is not implemented yet");
|
compile_error!("no_std support is not implemented yet");
|
||||||
|
48
src/wrapper.rs
Normal file
48
src/wrapper.rs
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
use std::error::Error as StdError;
|
||||||
|
use std::fmt::{self, Debug, Display};
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct MessageError<M>(pub M);
|
||||||
|
|
||||||
|
impl<M> Debug for MessageError<M>
|
||||||
|
where
|
||||||
|
M: Display + Debug,
|
||||||
|
{
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
Debug::fmt(&self.0, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<M> Display for MessageError<M>
|
||||||
|
where
|
||||||
|
M: Display + Debug,
|
||||||
|
{
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
Display::fmt(&self.0, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<M> StdError for MessageError<M> where M: Display + Debug + 'static {}
|
||||||
|
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct DisplayError<M>(pub M);
|
||||||
|
|
||||||
|
impl<M> Debug for DisplayError<M>
|
||||||
|
where
|
||||||
|
M: Display,
|
||||||
|
{
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
Display::fmt(&self.0, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<M> Display for DisplayError<M>
|
||||||
|
where
|
||||||
|
M: Display,
|
||||||
|
{
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
Display::fmt(&self.0, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<M> StdError for DisplayError<M> where M: Display + 'static {}
|
Loading…
x
Reference in New Issue
Block a user