async_sleep/sleep.rs
1use core::{future::Future, time::Duration};
2
3use crate::Sleepble;
4
5//
6pub fn sleep<SLEEP>(dur: Duration) -> impl Future<Output = ()>
7where
8 SLEEP: Sleepble,
9{
10 SLEEP::sleep(dur).wait()
11}
12
13#[cfg(feature = "std")]
14pub fn sleep_until<SLEEP>(deadline: std::time::Instant) -> impl Future<Output = ()>
15where
16 SLEEP: Sleepble,
17{
18 let dur = deadline
19 .checked_duration_since(std::time::Instant::now())
20 .unwrap_or_default();
21
22 sleep::<SLEEP>(dur)
23}