simple/
simple.rs

1use setting_tracker::Setting;
2
3#[derive(Default, Debug)]
4struct Settings {
5    port: Setting<u16>,
6    domain: Setting<String>,
7}
8
9fn main() {
10    let mut settings = Settings::default();
11    // Register callbacks for value changes
12    settings
13        .domain
14        .cb(|o, n| println!("domain: {:?} -> {:?}", o, n));
15    settings
16        .port
17        .cb(|o, n| println!("port: {:?} -> {:?}", o, n));
18    // Set new values, callbacks are now invoked when setting is changed
19    println!("{:?}", settings);
20    settings.domain.set("127.0.0.1".to_string());
21    settings.port.set(1337);
22    println!("{:?}", settings);
23}
24
25/*
26Output:
27    Settings { port: 0, domain: "" }
28    domain: "" -> "127.0.0.1"
29    port: 0 -> 1337
30    Settings { port: 1337, domain: "127.0.0.1" }
31 */