2 个版本
0.1.1 | 2020 年 4 月 16 日 |
---|---|
0.1.0 | 2020 年 4 月 16 日 |
#123 in #net
140KB
2.5K SLoC
kayrx-timer
lib.rs
:
时间跟踪
此模块提供了一些类型,用于在设定的时间后执行代码。
-
Delay
是一个不执行任何操作并在特定时间点完成的 future。 -
Interval
是一个在固定周期产生值的流。它使用Duration
初始化,并在持续时间结束时重复产生值。 -
Timeout
:封装一个 future 或 stream,设置其执行时间上限。如果 future 或 stream 没有在规定时间内完成,则取消它并返回错误。 -
DelayQueue
:一个队列,当请求的延迟时间到期后返回项目。
这些类型足以处理涉及时间的许多场景。
必须在使用 Runtime
的上下文中使用这些类型。
示例
等待 100ms 并打印 "Hello World!"
use kayrx_timer::delay_for;
use std::time::Duration;
use kayrx_karx;
fn main() {
kayrx_karx::exec(async {
delay_for(Duration::from_millis(100)).await;
println!("100 ms have elapsed");
});
}
要求操作不超过 300ms。注意,这使用 FutureExt
trait 上的 timeout
函数。此 trait 包含在预定义中。
use kayrx_timer::{timeout, Duration};
async fn long_future() {
// do work here
}
let res = timeout(Duration::from_secs(1), long_future()).await;
if res.is_err() {
println!("operation timed out");
}
依赖项
~135KB