Function sampara::signal::from_fn[][src]

pub fn from_fn<F, G, const N: usize>(gen_fn: G) -> FromFn<F, G, N> where
    F: Frame<N>,
    G: FnMut() -> Option<F>, 

Creates a new Signal where each Frame is yielded by calling a given closure that produces a Option<Frame> for each iteration.

use sampara::{signal, Signal};

fn main() {
    let mut state = 1;
    let mut signal = signal::from_fn(|| {
        if state < 4 {
            let frame = [state, state * 2, state * 3];
            state += 1;
            Some(frame)
        }
        else { None }
    });

    assert_eq!(signal.next(), Some([1, 2, 3]));
    assert_eq!(signal.next(), Some([2, 4, 6]));
    assert_eq!(signal.next(), Some([3, 6, 9]));
    assert_eq!(signal.next(), None);
}