Skip to content

Yaulendil/tomlconf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TomlConf

Crates.io Downloads
GitHub

docs.rs

Manage TOML Configuration files simply, cleanly, and consistently.

TomlConf uses the directories library to locate the appropriate place for application data in a cross-platform way, and populates that location with a default file included at compile-time.

All you need to do is define a struct that implements serde::de::DeserializeOwned (typically by way of #[derive(Deserialize)] for a struct that owns its data) and implement the ConfigData trait for it. You can then use the constructors on the trait to create, load, and read the data from a file; If you also derive Serialize, you can even save changes to the data back into the file.

Example

#[derive(Deserialize)]
struct AppConfig {
    output: String,
    number: usize,
}

impl ConfigData for AppConfig {
    const DEFAULT: &'static str = include_str!("cfg_default.toml");
}


fn main() {
    let cfg: ConfigFile<AppConfig> = match AppConfig::setup(
        "com", // "Qualifier"; OSX-specific.
        "Cool Software LTD", // Organization name.
        "TextPrinter", // Application name.
        "config.toml", // Configuration file name.
    ) {
        Ok((msg, config)) => {
            //  This `msg` variable tells the user whether an existing config
            //      file was found, or whether a new one was created with the
            //      default values instead.
            eprintln!("{}", msg);
            config
        }
        Err(msg) => {
            eprintln!("Setup failed: {}", msg);
            std::process::exit(1);
        }
    };

    for i in 0..cfg.number {
        println!("{}: {}", i, &cfg.output);
    }
}

About

Management library for TOML-based application config data.

Topics

Resources

License

Stars

Watchers

Forks

Languages