[−][src]Macro anyhow::ensure
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][crate::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);