[][src]Macro chainerror::cherr

macro_rules! cherr {
    ( $k:expr ) => { ... };
    ( None, $k:expr ) => { ... };
    ( None, $fmt:expr, $($arg:tt)+ ) => { ... };
    ( None, $fmt:expr, $($arg:tt)+ ) => { ... };
    ( $e:path, $k:expr ) => { ... };
    ( $e:path, $fmt:expr, $($arg:tt)+ ) => { ... };
}

Creates a new ChainError<T>

Examples

Create a new ChainError, where FooError must implement Display and Debug.

enum FooError {
    Bar,
    Baz(&'static str),
}

//  impl ::std::fmt::Display for FooError

fn do_some_stuff() -> bool {
    false
}

fn func() -> ChainResult<(), FooError> {
    if ! do_some_stuff() {
        Err(cherr!(FooError::Baz("Error")))?;
    }
    Ok(())
}

Additionally an error cause can be added.

fn do_some_stuff() -> Result<(), Box<Error>> {
    Err(io::Error::from(io::ErrorKind::NotFound))?;
    Ok(())
}

fn func() -> ChainResult<(), FooError> {
    do_some_stuff().map_err(
        |e| cherr!(e, FooError::Baz("Error"))
    )?;
    Ok(())
}