3 个稳定版本
1.1.1 | 2022 年 1 月 31 日 |
---|---|
1.0.0 | 2021 年 12 月 9 日 |
#1403 in 文件系统
24KB
368 行
TomlConf
简单、干净、一致地管理 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