#tor #arti #async #retry

retry-error

An error type for an operation that can fail more than once

16 unstable releases (5 breaking)

0.5.1 Sep 5, 2023
0.4.2 Jun 30, 2023
0.3.1 Feb 1, 2023
0.3.0 Nov 30, 2022
0.0.0 Jun 24, 2021

#385 in Rust patterns

Download history 241/week @ 2023-06-10 294/week @ 2023-06-17 282/week @ 2023-06-24 472/week @ 2023-07-01 211/week @ 2023-07-08 188/week @ 2023-07-15 223/week @ 2023-07-22 335/week @ 2023-07-29 323/week @ 2023-08-05 294/week @ 2023-08-12 268/week @ 2023-08-19 245/week @ 2023-08-26 451/week @ 2023-09-02 290/week @ 2023-09-09 286/week @ 2023-09-16 121/week @ 2023-09-23

1,161 downloads per month
Used in 35 crates (4 directly)

MIT/Apache

17KB
298 lines

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

No runtime deps