2 个版本
0.1.3 | 2023年8月12日 |
---|---|
0.1.2 | 2023年7月23日 |
0.1.1 |
|
0.1.0 |
|
#1470 在 编码
每月25次下载
17KB
237 行
configgen-rs
尝试制作一个小的crate,如果文件系统上尚不存在,则生成默认配置文件。有点像 config
这样的极简但互补的crate
设计
该crate公开了一些方法,允许安全地创建目录和配置文件。创建配置文件的方法接受一个实现 serde::Serializable
的对象,该对象将被序列化到创建的文件中。
数据格式
目前只处理几种格式
- Json
- Json5
- Toml
- Ron
如何使用
use config::Config;
use configgen_rs;
use serde::{Deserialize, Serialize};
use std::{path::PathBuf, str::FromStr};
#[derive(Serialize, Deserialize)]
struct DummyConfig {
pub field1: i32,
}
fn main() {
let written_config = DummyConfig { field1: 2 };
let path = PathBuf::from_str("/tmp/test_config").unwrap();
configgen_rs::initialization::initialize_config_file(
&written_config,
&path,
configgen_rs::SerializationFormat::Toml,
)
.expect("Writing failed");
// From here, testing that the config crate can read the written file.
let f = config::File::new(path.to_str().unwrap(), config::FileFormat::Toml);
let config = Config::builder()
.add_source(config::File::from(f))
.build()
.unwrap();
let read_config = config.try_deserialize::<DummyConfig>().unwrap();
assert_eq!(read_config.field1, written_config.field1);
}
改进
请随时在GitHub上提出改进建议或报告错误!
依赖关系
~2.5–4MB
~79K SLoC