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

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

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

Returns the “name” of the error. Read more

Returns a reference to the underlying cause of this failure, if it is an error that wraps other errors. Read more

Returns a reference to the Backtrace carried by this failure, if it carries one. Read more

Provides context for this failure. Read more

Wraps this failure in a compatibility wrapper that implements std::error::Error. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.