Struct failure::SyncFailure
source · [−]pub struct SyncFailure<T> { /* private fields */ }
Expand description
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
.
Implementations
sourceimpl<E: Error + Send + 'static> SyncFailure<E>
impl<E: Error + Send + 'static> SyncFailure<E>
sourcepub fn new(err: E) -> Self
pub fn new(err: E) -> Self
Wraps 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
sourceimpl<T> Debug for SyncFailure<T> where
T: Debug,
impl<T> Debug for SyncFailure<T> where
T: Debug,
sourceimpl<T> Display for SyncFailure<T> where
T: Display,
impl<T> Display for SyncFailure<T> where
T: Display,
sourceimpl<E: Error + Send + 'static> Fail for SyncFailure<E>
impl<E: Error + Send + 'static> Fail for SyncFailure<E>
sourcefn cause(&self) -> Option<&dyn Fail>
fn cause(&self) -> Option<&dyn Fail>
Returns a reference to the underlying cause of this failure, if it is an error that wraps other errors. Read more
sourcefn backtrace(&self) -> Option<&Backtrace>
fn backtrace(&self) -> Option<&Backtrace>
Returns a reference to the Backtrace
carried by this failure, if it
carries one. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for SyncFailure<T>
impl<T> Send for SyncFailure<T> where
T: Send,
impl<T> Sync for SyncFailure<T> where
T: Send,
impl<T> Unpin for SyncFailure<T> where
T: Unpin,
impl<T> UnwindSafe for SyncFailure<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more