#fault-tolerance #backoff #resilience #retry #rust

resilient-rs

A Rust utility library for fault tolerance, including retry strategies, backoff mechanisms, and failure handling

16 unstable releases (3 breaking)

Uses new Rust 2024

0.4.10 Mar 27, 2025
0.4.9 Mar 19, 2025
0.3.0 Mar 1, 2025
0.2.1 Mar 1, 2025
0.1.1 Feb 28, 2025

#190 in Concurrency

Download history 729/week @ 2025-02-28 280/week @ 2025-03-07 638/week @ 2025-03-14 141/week @ 2025-03-21 60/week @ 2025-03-28 5/week @ 2025-04-04

856 downloads per month

MIT license

76KB
1K SLoC

Resilient-rs

A Rust utility library for fault tolerance, including retry strategies, backoff mechanisms, failure handling and much more.

Join Community Badge GitHub contributors Crates.io Downloads Docs.rs

💖 Loved the work? Subscribe to my YouTube channel or consider giving this repository a ⭐ to show your support!


🚀 Feature Overview

Here’s a snapshot of what this library brings to the table—resilience, reliability, and a sprinkle of magic! Check out the features, their details, and where they stand:

Feature Description Status
🔄 Retry 🚀 Advanced retry strategies:
   1️⃣ Linear
   2️⃣ Exponential Backoff
   3️⃣ Exponential Backoff with Jitter
   4️⃣ Fibonacci Backoff
   5️⃣ Arithmetic Progression
🔧 Supports custom retry conditions
Stable
⚡ Execute Execute operations with timeout and fallback—like a pro 💪 Stable
🧵 Parallel Exec ⚙️ Run multiple tasks concurrently with configurable limits 🚀 🛠️ Planned
🛡️ Circuit Breaker 🔥 Prevents cascading failures by halting operations when failure thresholds are breached 🚧 ⚠️ Thread Unsafe
📦 Memoize 💾 Future caching support for improved performance 🚀 🛠️ Planned
📜 Logging 🕵️ Detailed logging for debugging—like a detective 🔍 Stable
📚 More Examples 📖 Additional demos to inspire and illustrate usage ✨ 🛠️ Planned

Notes:

  • Supported Contexts: All features work seamlessly for both synchronous and asynchronous operations—flexibility is our middle name!

🏃‍♂️ Runtime Compatibility

This library plays nice with your favorite Rust async runtimes. The resilient_rs::asynchronous module has you covered with:

  • Tokio - Power up with Tokio’s async I/O and runtime
  • async-std - Keep it light with async-std’s sleek runtime
  • futures - Stick to the basics with the core futures crate and blocking execution

📦 How to Use resilient-rs

Here’s a quick example of how to use the resilient-rs crate in your Rust project.

1️⃣ Add resilient-rs to Your Cargo.toml

Add the following line to your Cargo.toml file:

[dependencies]
resilient-rs = "0.4.10" # Replace with the latest version

OR

cargo add resilient-rs

📖 Examples

Hover over the function you want to use in your IDE to see code documentation examples, or check out the code-examples folder for example usage of this crate.

🚀 Contributing

We welcome your contributions! Please check out our Contributing Guidelines to get started.

Dependencies

~5–15MB
~193K SLoC