-
-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: document custom Sleeper impl #147
Changes from 1 commit
c43737f
0cfae4b
5db9a15
9b08faa
ef1c0fa
fc88e36
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,15 +32,43 @@ | |
//! # Sleep | ||
//! | ||
//! Retry in BackON requires an implementation for sleeping. BackON will accept a [`Sleeper`] to pause for a specified duration. | ||
//! | ||
//! ## Default `Sleeper` | ||
//! | ||
//! Currently, BackON has 2 built-in `Sleeper` implementations for different environments, | ||
//! they are gated under their own features, which are enabled by default: | ||
//! | ||
//! | `Sleeper` | feature | Environment | | ||
//! |---------------------|------------------|-------------| | ||
//! | [`TokioSleeper`] | tokio-sleep | non-wasm32 | | ||
//! | [`GlooTimersSleep`] | gloo-timers-sleep| wasm32 | | ||
//! | ||
//! ## Custom `Sleeper` | ||
//! | ||
//! If you do not want to use the built-in `Sleeper`, you CAN provide a custom | ||
//! implementation, here is an example that implements a `Sleeper` with `monoio::time::sleep`: | ||
//! | ||
//! ```rust,no_run | ||
//! use std::time::Duration; | ||
//! use backon::Sleeper; | ||
//! use monoio::time::sleep; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't want to use Monoio as an example here. Let's just implement a function that prints "Hello, World!" and then returns There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
//! use monoio::time::Sleep; | ||
//! | ||
//! /// Sleeper implemented using `monoio::time::sleep()`. | ||
//! struct MonoioSleeper; | ||
//! | ||
//! impl Sleeper for MonoioSleeper { | ||
//! type Sleep = Sleep; | ||
//! | ||
//! fn sleep(&self, dur: Duration) -> Self::Sleep { | ||
//! sleep(dur) | ||
//! } | ||
//! } | ||
//! ``` | ||
//! | ||
//! ## The empty `Sleeper` | ||
//! | ||
//! BackON employs the following default sleep implementations: | ||
//! | ||
//! - `tokio-sleep`: Utilizes [`TokioSleeper`] within a Tokio context in non-wasm32 environments. | ||
//! - `gloo-timers-sleep`: Utilizes [`GlooTimersSleep`] to pause in wasm32 environments. | ||
//! | ||
//! Users CAN provide a custom implementation if they prefer not to use the default options. | ||
//! | ||
//! If neither feature is enabled nor a custom implementation is provided, BackON will fallback to an empty sleeper. This will cause a panic in the `debug` profile and do nothing in the `release` profile. | ||
//! If neither feature is enabled nor a custom implementation is provided, BackON will fallback to the empty sleeper. This will cause a panic in the `debug` profile and do nothing in the `release` profile. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is out-of-date now. We will raise a build error now. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated |
||
//! | ||
//! # Retry | ||
//! | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be
3
, we havestd-blocking-sleep
for blocking context.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added the
BlockingSleeper
to the table.