pub fn sleep_until(deadline: Instant) -> Sleep ⓘ展开描述
等待直到到达 deadline。
在等待 sleep future 完成时不会执行任何工作。Sleep 以毫秒粒度运行,不应用于需要高分辨率定时器的任务。
若要按计划定期运行某些任务,请参阅 interval。
§Cancellation
取消 sleep 实例的方法是 drop 返回的 future。无需进行额外的清理工作。
§示例
等待 100 毫秒并打印 “已过 100 毫秒”。
use tokio::time::{sleep_until, Instant, Duration};
sleep_until(Instant::now() + Duration::from_millis(100)).await;
println!("100 ms have elapsed");有关更多示例,请参阅 Sleep 类型的文档。
§恐慌
如果未设置当前定时器,此函数会发生 panic。
当 Builder::enable_time 或 Builder::enable_all 未包含在 builder 中时,可能会触发 panic。
每当在 Tokio 运行时之外创建定时器时,它也可能会发生 panic。这就是 rt.block_on(sleep(...)) 会发生 panic 的原因,因为该函数在运行时之外执行。而 rt.block_on(async {sleep(...).await}) 不会 panic,这是因为将函数包装在 async 中使其变为惰性的,从而可以在运行时内成功执行而不会发生 panic。