6dc75f0c5d
This patch adds tests for Rust 1.54.0, 1.55.0 and 1.56.0. To make the tests pass, we have to take care of some changes like more details elements and changed heading levels. To make it easier to generate the tests for new Rust versions, we also add two bash scripts that take care of that.
39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
---
|
||
source: tests/output.rs
|
||
expression: "get_stdout(path, &[\"anyhow::ensure\"])"
|
||
|
||
---
|
||
anyhow Macro anyhow::ensure rusty-man
|
||
|
||
SYNOPSIS
|
||
macro_rules! ensure {
|
||
($cond : expr $(,) ?) => { ... };
|
||
($cond : expr, $msg : literal $(,) ?) => { ... };
|
||
($cond : expr, $err : expr $(,) ?) => { ... };
|
||
($cond : expr, $fmt : expr, $($arg : tt) *) => { ... };
|
||
}
|
||
|
||
DESCRIPTION
|
||
Return early with an error if a condition is not satisfied.
|
||
|
||
This macro is equivalent to `if !$cond { return Err(``anyhow!($args...)``); }`.
|
||
|
||
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);`
|
||
|
||
|