arti/crates/retry-error
Nick Mathewson 7b93091f57 Bump the version of every* crate to 0.3.0
* Except for safelog and fs-mistrust, which are new.
2022-05-06 10:03:15 -04:00
..
src Fix sentences 2022-04-27 13:53:23 +01:00
Cargo.toml Bump the version of every* crate to 0.3.0 2022-05-06 10:03:15 -04:00
README.md Fix sentences 2022-04-27 13:53:23 +01:00

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