41次发布
1.0.0-beta.14 | 2024年6月25日 |
---|---|
1.0.0-beta.13 | 2024年3月23日 |
1.0.0-beta.12 | 2024年2月10日 |
1.0.0-beta.11 | 2023年10月27日 |
0.2.10 | 2019年7月15日 |
#65 在 WebAssembly
12,935 每月下载量
在 28 个crates(16个直接) 中使用
64KB
1.5K SLoC
async-timer
Rust异步编程的计时器设施
精度
不依赖于异步事件循环的常规计时器通常与用户空间计时器(如tokio
)相当。如果您不适用,应启用基于事件循环的计时器,这在大多数情况下会在Unix平台上提供最精确的计时器(见特性。)
特性
tokio1
- 启用使用tokio的基于事件循环的计时器,在Unix平台上提供更高分辨率的计时器。c_wrapper
- 使用C包装器创建到平台API的绑定,这可能比libc
更可靠。std
- 启用使用std类型(例如Error)的功能
示例
定时器
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),
}
}
间隔
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;
}
}
依赖
~0–8.5MB
~62K SLoC