pub enum RetryStrategy {
Fixed {
delay: u64,
},
Linear {
initial: u64,
increment: u64,
max_delay: Option<u64>,
},
Exponential {
initial: u64,
multiplier: f64,
max_delay: Option<u64>,
},
Polynomial {
initial: u64,
power: f64,
max_delay: Option<u64>,
},
Fibonacci {
initial: u64,
max_delay: Option<u64>,
},
DecorrelatedJitter {
base: u64,
max_delay: u64,
},
FullJitter {
initial: u64,
multiplier: f64,
max_delay: Option<u64>,
},
EqualJitter {
initial: u64,
multiplier: f64,
max_delay: Option<u64>,
},
Custom {
delays: Vec<u64>,
fallback: u64,
},
Immediate,
}Expand description
Retry strategy configuration
Variants§
Fixed
Fixed delay between retries
Linear
Linear backoff (delay increases linearly)
Fields
Exponential
Exponential backoff (delay doubles each retry)
Fields
Polynomial
Polynomial backoff (delay = initial * retry^power)
Fields
Fibonacci
Fibonacci backoff (delays follow Fibonacci sequence)
Decorrelated jitter (AWS recommended for distributed systems)
delay = random(base, previous_delay * 3)
FullJitter
Full jitter (random between 0 and exponential delay)
Fields
EqualJitter
Equal jitter (half fixed, half random)
Fields
Custom
Custom delays specified explicitly for each retry
Fields
Immediate
No delay between retries
Implementations§
Source§impl RetryStrategy
impl RetryStrategy
Sourcepub fn linear_with_max(initial: u64, increment: u64, max_delay: u64) -> Self
pub fn linear_with_max(initial: u64, increment: u64, max_delay: u64) -> Self
Create a linear backoff strategy with max delay
Sourcepub fn exponential(initial: u64, multiplier: f64) -> Self
pub fn exponential(initial: u64, multiplier: f64) -> Self
Create an exponential backoff strategy
Sourcepub fn exponential_with_max(
initial: u64,
multiplier: f64,
max_delay: u64,
) -> Self
pub fn exponential_with_max( initial: u64, multiplier: f64, max_delay: u64, ) -> Self
Create an exponential backoff strategy with max delay
Sourcepub fn polynomial(initial: u64, power: f64) -> Self
pub fn polynomial(initial: u64, power: f64) -> Self
Create a polynomial backoff strategy
Create a decorrelated jitter strategy (AWS recommended)
Sourcepub fn full_jitter(initial: u64, multiplier: f64, max_delay: u64) -> Self
pub fn full_jitter(initial: u64, multiplier: f64, max_delay: u64) -> Self
Create a full jitter strategy
Sourcepub fn equal_jitter(initial: u64, multiplier: f64, max_delay: u64) -> Self
pub fn equal_jitter(initial: u64, multiplier: f64, max_delay: u64) -> Self
Create an equal jitter strategy
Sourcepub const fn is_jittered(&self) -> bool
pub const fn is_jittered(&self) -> bool
Check if this strategy uses randomness
Trait Implementations§
Source§impl Clone for RetryStrategy
impl Clone for RetryStrategy
Source§fn clone(&self) -> RetryStrategy
fn clone(&self) -> RetryStrategy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more