Macro rmididings::Chain[][src]

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

Adds multiple filters in a chain.

This means that each filter is run in sequence. When filtering, this means each event needs to be let through by each of the filters.

Examples

let chain = Chain!(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, ev3);

TODO test inverse