36 releases ()
1.0.0-beta.9 | Mar 12, 2023 |
---|---|
1.0.0-beta.8 | Dec 31, 2021 |
1.0.0-beta.7 | Dec 23, 2020 |
1.0.0-beta.5 | Jul 27, 2020 |
0.2.10 | Jul 15, 2019 |
#176 in WebAssembly
7,439 downloads per month
Used in 26 crates
(14 directly)
62KB
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)stream
- EnablesStream
implementation forInterval
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–1.5MB
~26K SLoC