[][src]Function dasp_signal::lift

pub fn lift<I, F, S>(iter: I, f: F) -> UntilExhausted<S> where
    I: IntoIterator,
    I::Item: Frame,
    F: FnOnce(FromIterator<I::IntoIter>) -> S,
    S: Signal<Frame = I::Item>, 

Consumes the given Iterator, converts it to a Signal, applies the given function to the Signal and returns an Iterator that will become exhausted when the consumed Iterator does.

This is particularly useful when you want to apply Signal methods to an Iterator yielding Frames and return an Iterator as a result.

Example

use dasp_signal::{self as signal, Signal};

fn main() {
    let frames = vec![0, 1, 2, 3];
    let offset_frames = signal::lift(frames, |signal| signal.offset_amp(2));
    assert_eq!(offset_frames.collect::<Vec<_>>(), vec![2, 3, 4, 5]);
}