[−][src]Struct failure::SyncFailure
Wrapper for std errors to make them Sync.
This exists to coerce existing types that are only Error + Send + 'static into a Fail-compatible representation, most notably for
types generated by error-chain.
Unfortunately, this requires wrapping the error in a Mutex, which must
be locked for every Debug/Display. Therefore, this should be
something of a last resort in making the error work with failure.
Methods
impl<E: Error + Send + 'static> SyncFailure<E>[src]
impl<E: Error + Send + 'static> SyncFailure<E>pub fn new(err: E) -> Self[src]
pub fn new(err: E) -> SelfWraps a non-Sync Error in order to make it implement Fail.
Example
extern crate failure; use failure::{Error, SyncFailure}; use std::cell::RefCell; #[derive(Debug)] struct NonSyncError { // RefCells are non-Sync, so structs containing them will be // non-Sync as well. count: RefCell<usize>, } // implement Display/Error for NonSyncError... fn returns_error() -> Result<(), NonSyncError> { // Do stuff } fn my_function() -> Result<(), Error> { // without the map_err here, we end up with a compile error // complaining that NonSyncError doesn't implement Sync. returns_error().map_err(SyncFailure::new)?; // Do more stuff }
Trait Implementations
impl<E: Error + Send + 'static> Fail for SyncFailure<E>[src]
impl<E: Error + Send + 'static> Fail for SyncFailure<E>fn cause(&self) -> Option<&Fail>[src]
fn cause(&self) -> Option<&Fail>Returns a reference to the underlying cause of this failure, if it is an error that wraps other errors. Read more
fn backtrace(&self) -> Option<&Backtrace>[src]
fn backtrace(&self) -> Option<&Backtrace>Returns a reference to the Backtrace carried by this failure, if it carries one. Read more
fn context<D>(self, context: D) -> Context<D> where
D: Display + Send + Sync + 'static,
Self: Sized, [src]
fn context<D>(self, context: D) -> Context<D> where
D: Display + Send + Sync + 'static,
Self: Sized, Provides context for this failure. Read more
fn compat(self) -> Compat<Self> where
Self: Sized, [src]
fn compat(self) -> Compat<Self> where
Self: Sized, Wraps this failure in a compatibility wrapper that implements std::error::Error. Read more
impl<T> Display for SyncFailure<T> where
T: Display, [src]
impl<T> Display for SyncFailure<T> where
T: Display, fn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl<T> Debug for SyncFailure<T> where
T: Debug, [src]
impl<T> Debug for SyncFailure<T> where
T: Debug, Auto Trait Implementations
impl<T> Send for SyncFailure<T> where
T: Send,
impl<T> Send for SyncFailure<T> where
T: Send, impl<T> Sync for SyncFailure<T> where
T: Send,
impl<T> Sync for SyncFailure<T> where
T: Send, Blanket Implementations
impl<E> Fail for E where
E: 'static + Error + Send + Sync, [src]
impl<E> Fail for E where
E: 'static + Error + Send + Sync, fn cause(&self) -> Option<&Fail>[src]
fn cause(&self) -> Option<&Fail>Returns a reference to the underlying cause of this failure, if it is an error that wraps other errors. Read more
fn backtrace(&self) -> Option<&Backtrace>[src]
fn backtrace(&self) -> Option<&Backtrace>Returns a reference to the Backtrace carried by this failure, if it carries one. Read more
fn context<D>(self, context: D) -> Context<D> where
D: Display + Send + Sync + 'static,
Self: Sized, [src]
fn context<D>(self, context: D) -> Context<D> where
D: Display + Send + Sync + 'static,
Self: Sized, Provides context for this failure. Read more
fn compat(self) -> Compat<Self> where
Self: Sized, [src]
fn compat(self) -> Compat<Self> where
Self: Sized, Wraps this failure in a compatibility wrapper that implements std::error::Error. Read more
impl<T> ToString for T where
T: Display + ?Sized, [src]
impl<T> ToString for T where
T: Display + ?Sized, impl<T, U> Into for T where
U: From<T>, [src]
impl<T, U> Into for T where
U: From<T>, impl<T> From for T[src]
impl<T> From for Timpl<T, U> TryFrom for T where
T: From<U>, [src]
impl<T, U> TryFrom for T where
T: From<U>, type Error = !
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>try_from)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized, [src]
impl<T> Borrow for T where
T: ?Sized, impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
impl<T, U> TryInto for T where
U: TryFrom<T>, type Error = <U as TryFrom<T>>::Error
try_from)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>try_from)Performs the conversion.
impl<T> BorrowMut for T where
T: ?Sized, [src]
impl<T> BorrowMut for T where
T: ?Sized, fn borrow_mut(&mut self) -> &mut T[src]
fn borrow_mut(&mut self) -> &mut TMutably borrows from an owned value. Read more
impl<T> Any for T where
T: 'static + ?Sized, [src]
impl<T> Any for T where
T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src]
fn get_type_id(&self) -> TypeId🔬 This is a nightly-only experimental API. (get_type_id)
this method will likely be replaced by an associated static
Gets the TypeId of self. Read more