1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use setting_tracker::Setting;

#[derive(Default, Debug)]
struct Settings {
    port: Setting<u16>,
    domain: Setting<String>,
}
fn main() {
    let mut settings = Settings::default(); // equivalent of `Settings { port: 0, domain: "".to_string() }`
    settings
        .port
        .cb(|old, new| println!("port: {:?} -> {:?}", old, new));
    settings.port.set(1);
    settings.port.set(10);
    let _ = settings.domain.get();
    let _ = settings.domain.as_ref();
}

/*
Output:
    port: 0 -> 1
    port: 1 -> 10
 */