bail
macro_rules! bail { ($msg:literal $(,)?) => { ... }; ($err:expr $(,)?) => { ... }; ($fmt:expr, $($arg:tt)*) => { ... };}Return early with an error.
This macro is equivalent to
return Err(anyhow!($args...)).
The surrounding function's or closure's return value is required to be
Result<_, [anyhow::Error][crate::Error]>.
Example
if !has_permission(user, resource) { bail!("permission denied for accessing {}", resource);}12345678910#[derive(Error, Debug)]enum ScienceError { #[error("recursion limit exceeded")] RecursionLimitExceeded, ...}
if depth > MAX_DEPTH { bail!(ScienceError::RecursionLimitExceeded);}