#exponential-backoff #backoff #retry #exponential #control-flow

ease-off

An easy, opinionated exponential backoff implementation

5 releases

0.1.5 Oct 23, 2024
0.1.4 Oct 19, 2024
0.1.0 Sep 25, 2024

#6 in #exponential-backoff

Download history 138/week @ 2024-09-21 100/week @ 2024-09-28 12/week @ 2024-10-05 2/week @ 2024-10-12 510/week @ 2024-10-19 63/week @ 2024-10-26

640 downloads per month

MIT/Apache

41KB
633 lines

ease-off

An easy, opinionated exponential backoff implementation.

Benefits over other implementations:

  • More flexible control flow (you implement the loop yourself).
  • Opinionated but sane defaults
    • Explicitly choose deadline, timeout or unlimited, so you know exactly what's going to happen.
  • RetryableError trait allows for more reusable code.
  • Immutable, const-friendly core API for when stateful backoffs aren't appropriate.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

An easy, opinionated exponential backoff implementation.

Benefits over other implementations:

  • More flexible control flow (you implement the loop yourself).
  • Opinionated but sane defaults
    • Explicitly choose deadline, timeout or unlimited, so you know exactly what's going to happen.
  • RetryableError trait allows for more reusable code.
  • Immutable core API for when stateful backoffs aren't appropriate.

Examples

Blocking Operation

(Source: examples/blocking.rs)

Async Operation (Tokio)

(Source: examples/tokio.rs)

Dependencies

~0.5–10MB
~121K SLoC