use setting_tracker::Setting;
#[derive(Default, Debug)]
struct Settings {
port: Setting<u16>,
domain: Setting<String>,
}
fn main() {
let mut settings = Settings::default();
// Register callbacks for value changes
settings
.domain
.cb(|o, n| println!("domain: {:?} -> {:?}", o, n));
settings
.port
.cb(|o, n| println!("port: {:?} -> {:?}", o, n));
// Set new values, callbacks are now invoked when setting is changed
println!("{:?}", settings);
settings.domain.set("127.0.0.1".to_string());
settings.port.set(1337);
println!("{:?}", settings);
}
/*
Output:
Settings { port: 0, domain: "" }
domain: "" -> "127.0.0.1"
port: 0 -> 1337
Settings { port: 1337, domain: "127.0.0.1" }
*/