Expand description
§Tryumph
A simple, flexible retry library for Rust that handles operations that may fail.
tryumph provides mechanisms for executing operations with customizable retry strategies.
It supports both synchronous and asynchronous execution models with various delay
strategies for retries.
§Features
- Synchronous retries through the
syncmodule - Asynchronous retries through the
unsyncmodule - Customizable retry strategies (exponential backoff, fixed interval, no delay, etc.)
§Usage Examples
§Synchronous Usage
use tryumph::sync::retry;
use tryumph::strategy::Exponential;
use std::time::Duration;
// Retry an operation with exponential backoff
let result = retry(Exponential::from_millis(100).take(3), || {
// Your fallible operation here
if some_condition() {
Ok("success")
} else {
Err("failure")
}
});
§Asynchronous Usage
use tryumph::unsync::retry;
use tryumph::strategy::Exponential;
use std::sync::{Arc, Mutex};
async fn example() -> Result<&'static str, &'static str> {
let attempts = Arc::new(Mutex::new(0));
let attempts_clone = attempts.clone();
retry(Exponential::from_millis(3), || {
let value = attempts_clone.clone();
async move {
let mut lock = value.lock().unwrap();
*lock += 1;
if *lock < 2 {
Err("Error")
} else {
Ok("Success")
}
}
}).await
}§Feature Flags
random: Enables randomized delay functionality (depends on rand)