set_timeout
This crate allows executing futures after a certain delay, similar to how setTimeout works in
js. The scheduling of a future can be cancelled as long as the future wasn't already executed,
by using a CancellationToken.
This crate uses a scheduler which allows running an unlimited number of delayed futures using
just a single tokio task, in contrast to many crates which spawn a new task for each set
timeout call. This uses less memory and should be more performant.
Please note that this crate can only be used in the context of a tokio runtime.
Example
async
Usage Tip
You can schedule many timeouts on the scheduler, but you should avoid scheduling futures which take a long time to execute, since such futures can block the scheduler from executing other scheduled timeouts, and may cause other timeouts to execute at a big delay.
If you really need to schedule some future which takes a long time, consider scheduling a future which spawns a new task and then does all the heavy stuff.
Sharing The Scheduler
The timeout scheduler can be shared between multiple tasks, by storing it in an [Arc], or by
storing it in a global variable using the lazy_static crate. For an example of this, check
out the example called global_variable and the example called multitasking in the examples directory.