b3f989d689
Since our last round of releases, these crates have had either trivial changes, or changes that did not affect their APIs. Therefore we are bumping their versions, but not changing which versions of them other crates depend on. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |
README.md
retry-error
An error attempt to represent multiple failures.
This crate implements [RetryError
], a type to use when you
retry something a few times, and all those attempts can fail differently
each time. Instead of returning only a single error, it records
all of the errors received, in case they are different.
This crate is developed as part of Arti, a project to implement Tor in Rust. It's used by higher-level crates that retry operations.
Example
use retry_error::RetryError;
fn some_operation() -> anyhow::Result<bool> {
unimplemented!(); // example
}
fn example() -> Result<(), RetryError<anyhow::Error>> {
const N_ATTEMPTS: usize = 10;
let mut err = RetryError::in_attempt_to("perform an example operation");
for _ in 0..N_ATTEMPTS {
match some_operation() {
Ok(val) => return Ok(()),
Err(e) => err.push(e),
}
}
// All attempts failed; return all the errors.
return Err(err);
}
License: MIT OR Apache-2.0