pub trait Executor: Sized {
type Handle<T: 'static>: super::Handle<T>;
fn spawn<T: Send + 'static>(
&self,
future: impl Future<Output = T> + Send + 'static,
) -> Self::Handle<T>;
fn block_on<T>(&self, future: impl Future<Output = T>) -> T;
fn new() -> std::io::Result<Self>;
}
pub trait RuntimeExecutor {
type Executor: Executor;
}