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 */