backoff_config/backoff.rs
1use backon::*;
2use std::time::Duration;
3
4#[derive(Debug)]
5/// Supported backoffs.
6pub enum Backoff {
7 /// Constant backoff.
8 Constant(ConstantBackoff),
9
10 /// Exponential backoff.
11 Exponential(ExponentialBackoff),
12
13 /// Fibonacci backoff.
14 Fibonacci(FibonacciBackoff),
15}
16
17impl Iterator for Backoff {
18 type Item = Duration;
19
20 fn next(&mut self) -> Option<Self::Item> {
21 match self {
22 Backoff::Constant(c) => c.next(),
23 Backoff::Exponential(e) => e.next(),
24 Backoff::Fibonacci(f) => f.next(),
25 }
26 }
27}