pub trait Executor: Sized {
type Handle<T: 'static>: super::Handle<T>;
fn spawn<T: 'static>(&self, future: impl Future<Output = T> + '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;
}