use std::time::Duration;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct BackoffConfig {
pub initial_delay: Duration,
pub max_delay: Duration,
}
impl Default for BackoffConfig {
fn default() -> Self {
Self {
initial_delay: Duration::from_millis(10),
max_delay: Duration::from_secs(1),
}
}
}
impl BackoffConfig {
#[must_use]
pub fn normalized(mut self) -> Self {
self.initial_delay = self.initial_delay.max(Duration::from_millis(1));
self.max_delay = self.max_delay.max(Duration::from_millis(1));
if self.initial_delay > self.max_delay {
std::mem::swap(&mut self.initial_delay, &mut self.max_delay);
}
self
}
}