4个稳定版本
1.1.3 | 2023年1月28日 |
---|---|
1.0.0 |
|
0.1.1 |
|
0.1.0 |
|
#318 在 配置
每月 32 次下载
36KB
383 行
fast_config
一个轻量级、安全、易于使用的Rust crate,用于读取和写入配置文件。
但计划稍后添加更多 Serde 支持的格式(如 RON)。
有用的快捷方式
注意:我将从该项目休息1-3个月
我已经连续整个星期在工作,每天/晚上大约 6小时。我现在感到非常疲惫。
我计划在回来后实施下一个大版本发布! (我在 lib.rs 的开头保留整个项目的 TODOs,如果有人想查看的话)
在下一个主要版本发布之前,我还会使用这个crate来工作几个边项目,以便对其进行彻底的测试。
除非有巨大的问题需要修复,否则下一个主要版本可能还会有些远(几周或几个月)。
仍将审查、修复和接受拉取请求和问题!
请随意贡献任何东西,我仍然会很活跃。我只是目前不打算自己实现任何大的新功能。
- Floof
这个crate是什么?
fast_config
是为了提供一个更快设置、更轻量级、静态类型的替代品,与 config。
与其他一些配置读取crate相比,它也有一些自己的优势,因为它完全支持写入/保存配置文件,并提供了一些关于配置文件样式的选项
为什么是这个crate?
- 它小巧且速度快 (使用编译时特性来删除/添加代码)
- 它安全且健壮 (使用Rust的结构体来存储数据,而不是HashMaps)
- 极简单易用 (只需3行简短代码即可创建配置文件,写入/读取内容,并保存)
为什么不是这个crate呢?
- 如果不了解数据格式,它将无法工作 (例如,如果您希望用户可以在对象中拥有从
key0
到key9000
的任何键) - 目前无法理解RON文件格式
- 目前无法在配置文件中保存注释。
2 和 3 将在未来更新中解决。
⚠ 文档和测试仍在制作中! ⚠
此crate现在已稳定,但我尚未在任何庞大的项目中进行过实战测试,所以虽然不会有任何恐慌或崩溃,但在大规模使用时可能会出现一些奇怪的事情。
目前,文档也可能有点奇怪或不完整。
如果您发现任何不符合预期的情况,请随时通过 创建一个问题 来贡献任何修复!
示例
use fast_config::Config;
use serde::{Serialize, Deserialize};
// Creating a config struct to store our data
#[derive(Serialize, Deserialize)]
pub struct MyData {
pub student_debt: i32
}
fn main() {
// Initializing a logging system (needed to show some warnings/errors)
env_logger::init();
// Creating our data (default values)
let data = MyData {
student_debt: 20
};
// Creating a new config struct with our data struct
let mut config = Config::new("./config/myconfig.json5", data).unwrap();
// Read/writing to the data
println!("I am ${} in debt", config.data.student_debt);
config.data.student_debt = i32::MAX;
println!("Oh no, i am now ${} in debt!!", config.data.student_debt);
// Saving it back to the disk
config.save().unwrap();
}
入门
- 通过以下方式将crate添加到您的项目中:
cargoadd fast_config
- 此外,还需要添加
serde
,因为它是必需的!
- 此外,还需要添加
- 启用您想使用的格式对应的特性
- 目前仅支持
json5
、toml
和yaml
- 目前仅支持
- 创建一个包含您的数据的struct,该struct继承自
Serialize
和Deserialize
- 创建您的数据struct的实例
- 可选地使用crate的
Config
类型以方便起见
use fast_config::Config;
- 使用
来创建和存储您的配置文件!或者您也可以使用let my_config = Config::new("./path/to/my_config_file", your_data).unwrap();
Config::from_settings
来设置样式并手动设置格式!
查看 示例目录 以获取更多高级示例。
依赖项
~0.4–1.8MB
~40K SLoC