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}