Struct fibers::InPlaceExecutor [] [src]

pub struct InPlaceExecutor { /* fields omitted */ }

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<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]

[src]

Creates a new instance of InPlaceExecutor.

Trait Implementations

impl Debug for InPlaceExecutor
[src]

[src]

Formats the value using the given formatter.

impl Executor for InPlaceExecutor
[src]

The handle type of the executor.

[src]

Returns the handle of the executor.

[src]

Runs one one unit of works.

[src]

Runs until the monitored fiber exits.

[src]

Runs until the future is ready.

[src]

Runs infinitely until an error happens.

impl Spawn for InPlaceExecutor
[src]

[src]

Spawns a fiber which will execute given boxed future.

[src]

Spawns a fiber which will execute given future.

[src]

Equivalent to self.spawn(futures::lazy(|| f())).

[src]

Spawns a fiber and returns a future to monitor it's execution result.

Spawns a linked fiber. Read more

[src]

Converts this instance into a boxed object.