get_values/
get_values.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use config_tools::{sectioned_defaults, Config, FromSection};

#[derive(Debug, FromSection)]
struct ServerSettings {
    address: String,
    port: u16,
    threads: u16,
}

fn main() {
    let config = Config::load_or_default("get-values.ini", || sectioned_defaults! {
        {
            "console" => "true",
            "log_level" => "info",
        }
        ["Server"] {
            "address" => "127.0.0.1",
            "port" => "8080",
            "threads" => "4",
        }
    });

    let console = config
        .get_as::<bool>(None, "console")
        .unwrap();
    let log_level = config
        .get(None, "log_level")
        .unwrap();

    let server_settings = ServerSettings::from_section(&config.section("Server").unwrap()).unwrap();

    println!("General:\n    console={:?}\n    log_level={:?}", console, log_level);
    println!("Server:\n    address={:?}\n    port={:?}\n    threads={:?}", server_settings.address, server_settings.port, server_settings.threads);
}