counter/
counter.rs

1#[derive(Clone)]
2struct State {
3    v: u64,
4}
5
6use std::time::Duration;
7
8use simple_triple_buffer::new_with;
9
10fn main() {
11    let (mut w, mut r) = new_with(State { v: 0 }, |s| {
12        println!("Cloned state!");
13        s.clone()
14    });
15
16    let tw = std::thread::spawn(move || loop {
17        w.write_new(|last, new| {
18            new.v = last.v + 1;
19        });
20    });
21
22    let tr = std::thread::spawn(move || {
23        let mut last = 0;
24        loop {
25            let state = r.read_newest();
26            println!("Value: {} (+{})", state.v, state.v - last);
27            last = state.v;
28            std::thread::sleep(Duration::from_millis(20));
29        }
30    });
31
32    tw.join().unwrap();
33    tr.join().unwrap();
34}