use std::sync::mpsc::channel;
use std::thread;
use std::time::Duration;
use setting_tracker::Setting;
#[derive(Default, Debug)]
struct Settings {
port: Setting<u16>,
}
fn main() {
let (sender, receiver) = channel();
let mut settings = Settings::default();
settings.port.cb(move |old, new| {
let old_and_new = (old.clone(), new.clone());
sender.send(old_and_new).unwrap();
});
thread::spawn(move || loop {
let port = receiver.recv();
if port.is_ok() {
println!(
"port changed: {:?} -> {:?}",
port.unwrap().0,
port.unwrap().1
);
}
});
let mut changing_port = 0u16;
loop {
changing_port = changing_port + 1;
settings.port.set(changing_port);
thread::sleep(Duration::from_millis(500));
}
}