2个不稳定版本
0.2.0 | 2023年12月22日 |
---|---|
0.1.0 | 2023年10月30日 |
#1680 in 编码
用于 labelmaker
63KB
891 行
GitHub | crates.io | 文档 | 问题 | 变更日志
cfgfifo
是一个Rust库,用于序列化和反序列化各种常见的配置文件格式(JSON,JSON5,RON,TOML,和 YAML),包括根据文件扩展名自动检测文件格式。对于想要支持多种配置文件格式但又不想编写大量样板代码的应用程序作者来说,它很有用。cfgfifo
已经为您编写了这些样板代码,所以让它为您(反)序列化文件吧!
示例
use serde::Deserialize;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
struct AppConfig {
#[serde(default)]
enable_foo: bool,
#[serde(default)]
bar_type: BarType,
#[serde(default)]
flavor: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq)]
enum BarType {
#[default]
Open,
Closed,
Clopen,
}
fn main() -> anyhow::Result<()> {
let Some(cfgpath) = std::env::args().nth(1) else {
anyhow::bail!("No configuration file specified");
};
// cfgfifo identifies the format used by the file `cfgpath` based on its
// file extension and deserializes it appropriately:
let cfg: AppConfig = cfgfifo::load(cfgpath)?;
println!("You specified the following configuration:");
println!("{cfg:#?}");
Ok(())
}
依赖项
~3–4.5MB
~92K SLoC