A Rust utility library for fault tolerance, including retry strategies, backoff mechanisms, failure handling and much more.
💖 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 | Details | Status |
|---|---|---|
| 🔄 Retry | Basic retry functionality—keeps trying! | ✅ Stable |
| With Backoff (exponential)—smart delays | ✅ Stable | |
| With Fallback—graceful recovery | ✅ Stable | |
| ⚡ Execute | Run ops with timeout & fallback—like a pro | ✅ Stable |
| 🛡️ Circuit Breaker | Stops cascading chaos in its tracks | 🛠️ Planned |
| 📦 Memoize | Cache it up for the future | 🛠️ Planned |
| 📜 Logging | Debug like a detective—full support | ✅ Stable |
| 📚 More Examples | Extra demos to spark your imagination | 🛠️ 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:
[]
= "0.4.5" # Replace with the latest version
OR
📖 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.