#toml-config #toml #serde #config-file #applications #read #automatic

tomlconf

简单、干净、一致地自动生成、读取和管理特定应用程序的 TOML 配置文件

3 个稳定版本

1.1.1 2022 年 1 月 31 日
1.0.0 2021 年 12 月 9 日

#1403 in 文件系统

Apache-2.0

24KB
368

TomlConf

Crates.io Downloads
GitHub

docs.rs

简单、干净、一致地管理 TOML 配置文件。

TomlConf 使用 directories 库以跨平台方式定位应用程序数据的位置,并在编译时包含默认文件填充该位置。

您需要做的只是定义一个实现 serde::de::DeserializeOwned 的结构体(通常通过 #[derive(Deserialize)] 为拥有其数据的结构体)并为它实现 ConfigData 特性。然后您可以使用特性的构造函数创建、加载和从文件中读取数据;如果您还实现了 Serialize,甚至可以将数据更改保存回文件。

示例

#[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);
    }
}

依赖

~0.3–1MB
~15K SLoC