signal_functions/apply.rs
1use crate::*;
2
3pub struct Apply<I, SF> {
4 pub iterator: I,
5 pub stream_function: SF,
6}
7
8impl<C, E, Item, I: Iterator<Item=(C, Item)>, SF: StreamFunction<Input=Item, Clock=C, Error=E>> Iterator for Apply<I, SF> {
9 type Item = SF::Output;
10
11 fn next(&mut self) -> Option<Self::Item> {
12 let input = self.iterator.next();
13 input.map(|(clock, input)| self.stream_function.step(input, clock).ok()).flatten()
14 }
15}