1extern crate shrev;
2
3use shrev::EventChannel;
4
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub struct TestEvent {
7 data: u32,
8}
9
10fn main() {
11 let mut channel = EventChannel::new();
12
13 let mut reader1 = channel.register_reader();
14 let mut reader2 = channel.register_reader();
15
16 channel.single_write(TestEvent { data: 1 });
17
18 println!("reader1 read: {:#?}", collect(channel.read(&mut reader1)));
20 channel.single_write(TestEvent { data: 32 });
21
22 println!("reader2 read: {:#?}", collect(channel.read(&mut reader2)));
24 println!("reader2 read: {:#?}", collect(channel.read(&mut reader2)));
26}
27
28fn collect<'a>(events: impl Iterator<Item = &'a TestEvent>) -> Vec<&'a TestEvent> {
30 events.collect()
31}