arti/crates/retry-error
Ian Jackson 486c73b6b7 Replace manual Clone impl with std derive in retry-error
This just clones the fields.  It is not clear to me why it was
written this way in be86df631d
   Remove anyhow dependency from tor-retry, and rename it to retry-error

Previously, I think, RetryError wasn't Clone.
2022-03-02 17:04:07 +00:00
..
src Replace manual Clone impl with std derive in retry-error 2022-03-02 17:04:07 +00:00
Cargo.toml Bump all crates to 0.1.0 2022-03-01 08:59:34 -05:00
README.md Example needs to be the same as the readme 2021-11-30 09:09:42 -05: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. 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