resilient 0.1.0

A Rust resilience library providing retry, circuit breaker, timeout, bulkhead, and rate limiting policies
Documentation
use resilient::{pipeline::Pipeline, TimeoutPolicy};
use std::time::Duration;
use tokio::time::sleep;

#[tokio::main]
async fn main() {
    let timeout = TimeoutPolicy::default().with_timeout(Duration::from_secs(1));
    let pipeline = Pipeline::default().with_timeout(timeout);

    let start = std::time::Instant::now();
    let result: Result<String, Box<dyn std::error::Error + Send + Sync>> = pipeline
        .run(|| async {
            sleep(Duration::from_secs(3)).await;
            Ok("done".to_string())
        })
        .await;

    let elapsed = start.elapsed();
    println!("result: {:?}", result);
    println!("elapsed: {:?} (should be ~1 second)", elapsed);
}