use alloc::rc::Rc;
use core::future::Future;
#[derive(Clone, Debug, Default)]
pub struct LocalSpawner(Rc<async_executor::LocalExecutor<'static>>);
impl LocalSpawner {
pub fn block_on(self, f: impl Future<Output = ()> + 'static) {
self.0.spawn(f).detach();
futures_lite::future::block_on(async {
while !self.0.is_empty() {
self.0.tick().await
}
});
}
}
impl super::Spawn for LocalSpawner {
#[inline(always)]
fn spawn_local(&self, f: impl Future<Output = ()> + 'static) {
self.0.spawn(f).detach();
}
#[inline(always)]
fn spawn(&self, f: impl Future<Output = ()> + Send + 'static) {
self.0.spawn(f).detach();
}
}