Struct failure::SyncFailure [−][src]
pub struct SyncFailure<T> { /* fields omitted */ }
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
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 }