use std::task::Waker;
use waker_fn::waker_fn;
pub(crate) trait WakerExt {
fn chain(&self, f: impl Fn(&Waker) + Send + Sync + 'static) -> Waker;
}
impl WakerExt for Waker {
fn chain(&self, f: impl Fn(&Waker) + Send + Sync + 'static) -> Waker {
let inner = self.clone();
waker_fn(move || (f)(&inner))
}
}