use std::{
task::Waker,
thread::{self, Thread},
};
use once_cell::sync::Lazy;
pub(crate) fn empty_waker() -> Waker {
static WAKER: Lazy<Waker> = Lazy::new(|| waker_fn::waker_fn(move || {}));
WAKER.clone()
}
pub(crate) fn current_thread_waker() -> Waker {
thread_waker(thread::current())
}
pub(crate) fn thread_waker(thread: Thread) -> Waker {
waker_fn::waker_fn(move || thread.unpark())
}