#configuration #yaml-config #serde #json-toml #config-file

opzioni

为Rust提供的轻量级且快速配置库

7个版本 (3个稳定版)

3.0.1 2024年2月5日
2.0.0 2023年6月14日
0.1.3 2023年5月21日

#327 in 配置

每月34次下载

MIT/Apache

28KB
378

⚙️ opzioni

一个简单快速的Rust配置库。

安装

通过cargo将库添加到项目中

cargoadd opzioni

功能

默认情况下,所有功能都已启用。这允许您使用JSON、TOML和YAML配置。

如果您只想使用子集,请运行

cargoadd opzioni --no-default-features --featuresjson

将json替换为您想要启用的功能。可用的功能包括

  • json
  • yaml
  • toml

您还可以通过使用tracing crate的tracing功能启用日志记录。默认情况下,此功能是禁用的

用法

首先创建一个实现SerializeDeserializeDefault的struct

use serde::{Serialize, Deserialize}

#[derive(Serialize, Deserialize, Default)]
struct MyConfig {
    name: String,
    age: u8
}

然后只需使用opzioni加载配置文件即可

let config = opzioni::Config::<MyConfig>::configure().load(std::path::Path::new("myconfig.yml")).unwrap();

opzioni公开了一个RwLock,可以用来修改配置数据

let lock = config.get();
let data = lock.read().unwrap();
// or
let mut data = lock.write().unwrap();

一旦您完成与配置的交互,可以通过调用save将更改保存到磁盘

config.save().unwrap();

依赖关系

~0.4–2.6MB
~51K SLoC