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}