Macro rmididings::Fork[][src]

macro_rules! Fork {
    ( $($f:expr),+ ) => { ... };
}
Expand description

Adds multiple filters in parallel.

Each event is passed to each of the filters, they are run in parallel. At the end of the filter chain, duplicate events are filtered out.

Examples

let chain = Fork!(ChannelFilter(1), KeyFilter(60));

let ev1 = NoteOnEvent(0,0,60,20);
let ev2 = NoteOnEvent(0,0,61,20);
let ev3 = NoteOnEvent(0,1,60,20);
let ev4 = NoteOnEvent(0,1,61,20);

let mut evs = EventStream::from(vec![&ev1, &ev2, &ev3, &ev4]);
chain.run(&mut evs);

assert_eq!(evs, vec![ev3, ev4, ev1]);

TODO test inverse