5 releases
Uses new Rust 2024
new 0.1.4 | Mar 14, 2025 |
---|---|
0.1.3 | Mar 14, 2025 |
0.1.2 | Mar 14, 2025 |
0.1.1 | Mar 13, 2025 |
0.1.0 | Mar 13, 2025 |
#10 in #exponential
61 downloads per month
6KB
78 lines
Overview
This Rust crate implements jittered backoff. Useful when retrying operations that can potentially fail (i.e. network calls). The implementation is based on this article from the AWS Architecture Blog.
Usage
You can use it like so:
use exp_backoff::*;
use std::error::Error;
use std::{thread, time::Duration};
fn func_that_can_fail() -> Result<(), Box<dyn Error>> {
if true {
return Err("some error")?;
}
Ok(())
}
fn main() -> Result<(), Box<dyn Error>> {
let mut bo = BackoffBuilder::new().build();
for _ in 0..5 {
match func_that_can_fail() {
Err(e) => {
println!("failed: {:?}, retry...", e);
thread::sleep(Duration::from_nanos(bo.pause()));
}
_ => println!("we're okay"),
}
}
Ok(())
}
Dependencies
~1MB
~17K SLoC