Add Application::Executor associated type
This commit is contained in:
parent
35760ac68f
commit
90690702e1
29 changed files with 195 additions and 72 deletions
15
futures/src/executor/async_std.rs
Normal file
15
futures/src/executor/async_std.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
use crate::Executor;
|
||||
|
||||
use futures::Future;
|
||||
|
||||
pub struct AsyncStd;
|
||||
|
||||
impl Executor for AsyncStd {
|
||||
fn new() -> Result<Self, futures::io::Error> {
|
||||
Ok(Self)
|
||||
}
|
||||
|
||||
fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
|
||||
let _ = async_std::task::spawn(future);
|
||||
}
|
||||
}
|
||||
13
futures/src/executor/null.rs
Normal file
13
futures/src/executor/null.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
use crate::Executor;
|
||||
|
||||
use futures::Future;
|
||||
|
||||
pub struct Null;
|
||||
|
||||
impl Executor for Null {
|
||||
fn new() -> Result<Self, futures::io::Error> {
|
||||
Ok(Self)
|
||||
}
|
||||
|
||||
fn spawn(&self, _future: impl Future<Output = ()> + Send + 'static) {}
|
||||
}
|
||||
15
futures/src/executor/thread_pool.rs
Normal file
15
futures/src/executor/thread_pool.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
use crate::Executor;
|
||||
|
||||
use futures::Future;
|
||||
|
||||
pub type ThreadPool = futures::executor::ThreadPool;
|
||||
|
||||
impl Executor for futures::executor::ThreadPool {
|
||||
fn new() -> Result<Self, futures::io::Error> {
|
||||
futures::executor::ThreadPool::new()
|
||||
}
|
||||
|
||||
fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
|
||||
self.spawn_ok(future);
|
||||
}
|
||||
}
|
||||
19
futures/src/executor/tokio.rs
Normal file
19
futures/src/executor/tokio.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
use crate::Executor;
|
||||
|
||||
use futures::Future;
|
||||
|
||||
pub type Tokio = tokio::runtime::Runtime;
|
||||
|
||||
impl Executor for Tokio {
|
||||
fn new() -> Result<Self, futures::io::Error> {
|
||||
tokio::runtime::Runtime::new()
|
||||
}
|
||||
|
||||
fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
|
||||
let _ = tokio::runtime::Runtime::spawn(self, future);
|
||||
}
|
||||
|
||||
fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
|
||||
tokio::runtime::Runtime::enter(self, f)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue