Attribute Macro enumx_derive::sum_err[][src]

#[sum_err]

To translate the expr? expressions in a different manner than the Rust's default:

match expr {
    Ok( value ) => value,
    Err( error ) => return Err( #[variant] error ),
}

A #[sum] tagged function should be tagged with #[sum_err] if it contains ? expressions.

Example

#[sum_err]
#[sum( impl Clone )]
fn foo( branch: i32 ) -> Result<(), impl Clone> {
    match branch % 3 {
        0 => Ok(()),
        1 => Ok( Err( 0 )? ),
        2 => Ok( Err( "lorum" )? ),
        _ => unreachable!(),
    }
}

Note: put #[sum_err] before #[sum].