[−][src]Struct fibers::executor::InPlaceExecutor
An executor that executes spawned fibers and I/O event polling on current thread.
Examples
An example to calculate fibonacci numbers:
use fibers::{Spawn, Executor, InPlaceExecutor}; use futures::{Async, Future}; fn fib<H: Spawn + Clone>(n: usize, handle: H) -> Box<dyn Future<Item=usize, Error=()> + Send> { if n < 2 { Box::new(futures::finished(n)) } else { let f0 = handle.spawn_monitor(fib(n - 1, handle.clone())); let f1 = handle.spawn_monitor(fib(n - 2, handle.clone())); Box::new(f0.join(f1).map(|(a0, a1)| a0 + a1).map_err(|_| ())) } } let mut executor = InPlaceExecutor::new().unwrap(); let mut monitor = executor.spawn_monitor(fib(7, executor.handle())); loop { if let Async::Ready(answer) = monitor.poll().unwrap() { assert_eq!(answer, 13); return; } else { executor.run_once().unwrap(); } }
Methods
impl InPlaceExecutor
[src]
Trait Implementations
impl Executor for InPlaceExecutor
[src]
type Handle = InPlaceExecutorHandle
The handle type of the executor.
fn handle(&self) -> Self::Handle
[src]
fn run_once(&mut self) -> Result<()>
[src]
fn run_fiber<T, E>(
&mut self,
monitor: Monitor<T, E>
) -> Result<Result<T, MonitorError<E>>>
[src]
&mut self,
monitor: Monitor<T, E>
) -> Result<Result<T, MonitorError<E>>>
fn run_future<F: Future>(
&mut self,
future: F
) -> Result<Result<F::Item, F::Error>>
[src]
&mut self,
future: F
) -> Result<Result<F::Item, F::Error>>
fn run(self) -> Result<()>
[src]
impl Spawn for InPlaceExecutor
[src]
fn spawn_boxed(&self, fiber: Box<dyn Future<Item = (), Error = ()> + Send>)
[src]
fn spawn<F>(&self, fiber: F) where
F: Future<Item = (), Error = ()> + Send + 'static,
[src]
F: Future<Item = (), Error = ()> + Send + 'static,
fn spawn_fn<F, T>(&self, f: F) where
F: FnOnce() -> T + Send + 'static,
T: IntoFuture<Item = (), Error = ()> + Send + 'static,
T::Future: Send,
[src]
F: FnOnce() -> T + Send + 'static,
T: IntoFuture<Item = (), Error = ()> + Send + 'static,
T::Future: Send,
fn spawn_monitor<F, T, E>(&self, f: F) -> Monitor<T, E> where
F: Future<Item = T, Error = E> + Send + 'static,
T: Send + 'static,
E: Send + 'static,
[src]
F: Future<Item = T, Error = E> + Send + 'static,
T: Send + 'static,
E: Send + 'static,
fn spawn_link<F, T, E>(&self, f: F) -> Link<(), (), T, E> where
F: Future<Item = T, Error = E> + Send + 'static,
T: Send + 'static,
E: Send + 'static,
[src]
F: Future<Item = T, Error = E> + Send + 'static,
T: Send + 'static,
E: Send + 'static,
fn boxed(self) -> BoxSpawn where
Self: Sized + Send + 'static,
[src]
Self: Sized + Send + 'static,
impl Debug for InPlaceExecutor
[src]
Auto Trait Implementations
impl Send for InPlaceExecutor
impl !Sync for InPlaceExecutor
impl Unpin for InPlaceExecutor
impl !UnwindSafe for InPlaceExecutor
impl !RefUnwindSafe for InPlaceExecutor
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,