Macro tract_hir::prelude::tract_data::anyhow::ensure    [−][src]
macro_rules! ensure {
    ($cond : expr $(,) ?) => { ... };
    ($cond : expr, $msg : literal $(,) ?) => { ... };
    ($cond : expr, $err : expr $(,) ?) => { ... };
    ($cond : expr, $fmt : expr, $($arg : tt) *) => { ... };
}Expand description
Return early with an error if a condition is not satisfied.
This macro is equivalent to if !$cond { return Err([anyhow!($args...)][anyhow!]); }.
The surrounding function’s or closure’s return value is required to be
Result<_,anyhow::Error>.
Analogously to assert!, ensure! takes a condition and exits the function
if the condition fails. Unlike assert!, ensure! returns an Error
rather than panicking.
Example
ensure!(user == 0, "only user 0 is allowed");#[derive(Error, Debug)]
enum ScienceError {
    #[error("recursion limit exceeded")]
    RecursionLimitExceeded,
    ...
}
ensure!(depth <= MAX_DEPTH, ScienceError::RecursionLimitExceeded);