Function bicoro::executor::execute_from_iter[][src]

pub fn execute_from_iter<'a, Iter, Input: 'a, Output: 'a, OnOutput, Result: 'a>(
    routine: Coroutine<'a, Input, Output, Result>,
    on_output: OnOutput,
    events: Iter
) -> IteratorExecutorResult<'a, Iter, Input, Output, Result> where
    Iter: Iterator<Item = Input>,
    OnOutput: FnMut(Output), 
Expand description

Consumes a coroutine and runs it with the iterated events This may run to completion, or may consume all the inputs The on_output function is called whenever a output is produced Note: it’s expected that shouldn’t ever panic

use bicoro::*;
use bicoro::executor::*;

// sample coroutine
let co : Coroutine<i32,i32,()> = receive().and_then(|i| send(i));

// inputs to send
let inputs = vec![1];
let mut outputs = vec![];
let on_output = |output:i32| outputs.push(output);

let exec = execute_from_iter(co,on_output,inputs.into_iter());

assert!(matches!(exec, IteratorExecutorResult::Completed{ result: (),..}));
assert_eq!(outputs, vec![1]);