pub fn execute_from_iter<Iter, Input, Output, OnOutput, Result>(
    routine: Coroutine<'_, Input, Output, Result>,
    on_output: OnOutput,
    events: Iter
) -> IteratorExecutorResult<'_, 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]);