Macro error_stack::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 Context:


use error_stack::{ensure, Context};

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

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

impl Context for PermissionDenied {}

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