use std::{future::Future, thread};
use tetanes_core::time::{Duration, Instant};
pub fn spawn_impl<F>(future: F)
where
F: Future<Output = ()> + 'static,
{
pollster::block_on(future)
}
pub fn park_timeout_impl(dur: Duration) {
let beginning_park = Instant::now();
let mut timeout_remaining = dur;
loop {
thread::park_timeout(timeout_remaining);
let elapsed = beginning_park.elapsed();
if elapsed >= dur {
break;
}
timeout_remaining = dur - elapsed;
}
}
pub async fn sleep_impl(dur: Duration) {
thread::sleep(dur);
}