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}