From f5c8afce0d025de5bc0684e1853bf504316b2b74 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 2 Feb 2021 15:36:43 +0100 Subject: [PATCH] feat: remove ChainErrorFrom and IntoChainError, add From ChainErrorFrom and IntoChainError are not needed anymore with the `#[track_caller]` feature. Now, a proper `From for ChainError` can be implemented. --- src/lib.rs | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 910e8aa..7dfa5a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -636,40 +636,16 @@ impl Debug for ChainError { } } -/// `ChainErrorFrom` is similar to `From` -pub trait ChainErrorFrom: Sized { - /// similar to From::from() - fn chain_error_from(from: T, line_filename: Option) -> ChainError; -} - -/// `IntoChainError` is similar to `Into` -pub trait IntoChainError: Sized { - /// similar to Into::into() - fn into_chain_error(self, line_filename: Option) -> ChainError; -} - -impl IntoChainError for T +impl From for ChainError where - U: ChainErrorFrom, + T: 'static + Display + Debug, { + #[track_caller] #[inline] - fn into_chain_error(self, line_filename: Option) -> ChainError { - U::chain_error_from(self, line_filename) + fn from(e: T) -> ChainError { + ChainError::new(e, None, Some(Location::caller().to_string())) } } - -impl ChainErrorFrom for U -where - T: Into, - U: 'static + Display + Debug, -{ - #[inline] - fn chain_error_from(t: T, line_filename: Option) -> ChainError { - let e: U = t.into(); - ChainError::new(e, None, line_filename) - } -} - /// Convenience macro to create a "new type" T(String) and implement Display + Debug for T /// /// # Examples