3个版本
0.1.2 | 2020年5月2日 |
---|---|
0.1.1 | 2020年4月3日 |
0.1.0 | 2020年3月26日 |
687 in 配置
13KB
81 行
fondant
fondant
是一个基于宏的库,用于从配置处理中去除样板代码。您只需在您的结构体上派生 Configure
特性,然后 fondant
将决定存储位置和如何安全地执行。
fondant
的大部分基于 confy
crate,并添加了一些额外的功能
- 支持json、yaml和toml
- 支持自定义配置路径
- 支持自定义配置文件名
使用(完整文档)
将此内容添加到您的 Cargo.toml
以开始
[dependencies]
fondant = "0.1.0"
派生宏
// the struct has to derive Serialize, Deserialize and Default
use fondant::Configure;
use serde::{Serialize, Deserialize};
#[derive(Configure, Serialize, Deserialize, Default)]
#[config_file = "config.toml"]
struct AppConfig {
port: u32,
username: String,
}
fn main() {
// use `load` to load the config file
// loads in Default::default if it can't find one
let mut conf = AppConfig::load().unwrap();
// do stuff with conf
conf.port = 7878;
// call `store` to save changes
conf.store().unwrap();
}
在 docs.rs 上找到更多示例和选项。
架构
fondant
被分为3个独立的crate
fondant_deps
:外部crate和fondant
所需的实用工具fondant_derive
:核心宏定义fondant
:面向用户的库,将所有功能整合在一起
这种略微奇怪的架构是由于proc-macro crate的一些限制以及cargo中严格的循环依赖而出现的。您只需要 fondant
crate。
待办事项
- 改进错误类型
- 使用
syn::Error
和syn::Result
报告宏错误 - 编写文档
- 编写测试套件
- 捆绑并发送到crates.io
依赖
~3–4MB
~86K SLoC