pub enum RetryMode {
None,
Fixed {
retries: usize,
delay: Duration,
},
ExponentialBackoff {
max_retries: usize,
base_delay: Duration,
multiplier: f64,
max_delay: Duration,
jitter: f64,
},
}Expand description
Retry modes for task execution
Defines different retry strategies that can be used when task execution fails.
Variants§
None
No retries - fail immediately on first error
Fixed
Fixed number of retries with constant delay
§Fields
retries: Number of retry attemptsdelay: Fixed delay between attempts
ExponentialBackoff
Exponential backoff with optional jitter
Implements exponential backoff: delay = base_delay * multiplier^attempt + jitter
§Fields
max_retries: Maximum number of retry attemptsbase_delay: Initial delay durationmultiplier: Exponential multiplier (typically 2.0)max_delay: Maximum delay cap to prevent excessive waitsjitter: Add randomness to prevent thundering herd (0.0 to 1.0)
Implementations§
Source§impl RetryMode
impl RetryMode
Sourcepub fn fixed(retries: usize, delay: Duration) -> Self
pub fn fixed(retries: usize, delay: Duration) -> Self
Create a fixed retry mode with specified retries and delay
Sourcepub fn exponential(max_retries: usize) -> Self
pub fn exponential(max_retries: usize) -> Self
Create an exponential backoff retry mode with sensible defaults
Uses base_delay=100ms, multiplier=2.0, max_delay=30s, jitter=0.1
Sourcepub fn exponential_custom(
max_retries: usize,
base_delay: Duration,
multiplier: f64,
max_delay: Duration,
jitter: f64,
) -> Self
pub fn exponential_custom( max_retries: usize, base_delay: Duration, multiplier: f64, max_delay: Duration, jitter: f64, ) -> Self
Create a custom exponential backoff retry mode
Sourcepub fn max_attempts(&self) -> usize
pub fn max_attempts(&self) -> usize
Get the maximum number of attempts (initial + retries)
Saturates at usize::MAX so pathological direct constructions (the
fields are pub) can’t overflow: retries + 1 on usize::MAX would
panic in debug and wrap to 0 in release — the wrapped value would
make the first error fail the task with zero retries.
Sourcepub fn delay_for_attempt(&self, attempt: usize) -> Option<Duration>
pub fn delay_for_attempt(&self, attempt: usize) -> Option<Duration>
Calculate delay for a specific attempt number (0-based)