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