#configuration #macro #cli

fondant

基于宏的库,用于从配置处理中去除样板代码

3个版本

0.1.2 2020年5月2日
0.1.1 2020年4月3日
0.1.0 2020年3月26日

687 in 配置

MIT 许可证

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::Errorsyn::Result 报告宏错误
  • 编写文档
  • 编写测试套件
  • 捆绑并发送到crates.io

依赖

~3–4MB
~86K SLoC