42 releases
| 1.0.0-beta.15 | Sep 29, 2024 |
|---|---|
| 1.0.0-beta.14 | Jun 25, 2024 |
| 1.0.0-beta.13 | Mar 23, 2024 |
| 1.0.0-beta.11 | Oct 27, 2023 |
| 0.2.10 | Jul 15, 2019 |
#161 in WebAssembly
4,605 downloads per month
Used in 32 crates
(16 directly)
65KB
1.5K
SLoC
async-timer
Timer facilities for Rust's async story
Accuracy
Regular timers that do not rely on async event loop tend to be on par with user space timers
like in tokio.
If that's not suitable for you you should enable event loop based timers which in most cases
give you the most accurate timers possible on unix platforms (See features.)
Features
tokio1- Enables event loop based timers using tokio, providing higher resolution timers on unix platforms.c_wrapper- Uses C shim to create bindings to platform API, which may be more reliable thanlibc.std- Enables usage of std types (e.g. Error)
Examples
Timed
async fn job() {
}
async fn do_job() {
let work = unsafe {
async_timer::Timed::platform_new_unchecked(job(), core::time::Duration::from_secs(1))
};
match work.await {
Ok(_) => println!("I'm done!"),
//You can retry by polling `expired`
Err(expired) => println!("Job expired: {}", expired),
}
}
Interval
async fn job() {
}
async fn do_a_while() {
let mut times: u8 = 0;
let mut interval = async_timer::Interval::platform_new(core::time::Duration::from_secs(1));
while times < 5 {
job().await;
interval.wait().await;
times += 1;
}
}
Dependencies
~0–10MB
~49K SLoC