use std::time::Duration;
use reliakit_backoff::{full_jitter, Backoff};
fn main() {
let policy = Backoff::exponential(Duration::from_millis(100), 2)
.with_max_delay(Duration::from_secs(2))
.with_max_retries(5);
let mut seed: u32 = 0x9e37_79b9;
let mut next_rand = move || {
seed ^= seed << 13;
seed ^= seed >> 17;
seed ^= seed << 5;
seed
};
println!("attempt base-delay jittered-delay");
for (attempt, base) in policy.delays().enumerate() {
let jittered = full_jitter(base, next_rand());
println!("{attempt:>7} {base:>10?} {jittered:>14?}");
}
println!("\nretry limit reached; giving up");
}