basic/
basic.rs

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    // Prints one event
19    println!("reader1 read: {:#?}", collect(channel.read(&mut reader1)));
20    channel.single_write(TestEvent { data: 32 });
21
22    // Prints two events
23    println!("reader2 read: {:#?}", collect(channel.read(&mut reader2)));
24    // Prints no events
25    println!("reader2 read: {:#?}", collect(channel.read(&mut reader2)));
26}
27
28/// Collects an iterator to a `Vec`
29fn collect<'a>(events: impl Iterator<Item = &'a TestEvent>) -> Vec<&'a TestEvent> {
30    events.collect()
31}