ensure

Macro ensure 

Source
macro_rules! ensure {
    ($cond:expr, $err:expr $(,)?) => { ... };
}
Expand description

Ensures $cond is met, otherwise return an error.

Shorthand for if !$cond { bail!(..)) }

ยงExamples

Create a Report from an Error:

use core::error::Error;
use core::fmt;

use error_stack::ensure;

#[derive(Debug)]
struct PermissionDenied(User, Resource);

impl fmt::Display for PermissionDenied {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        ...
        Ok(())
    }
}

impl Error for PermissionDenied {}

ensure!(
    has_permission(&user, &resource),
    PermissionDenied(user, resource)
);