#config-file #json5 #configuration #yaml-config #settings #file-format

fast_config

一个小巧简单的多格式crate,用于处理配置文件

4个稳定版本

1.1.3 2023年1月28日
1.0.0 2023年1月27日
0.1.1 2023年1月19日
0.1.0 2023年1月19日

#318配置

每月 32 次下载

MIT 协议

36KB
383

fast_config


github crates.io docs.rs
license code size issues GitHub Workflow Status

一个轻量级、安全、易于使用的Rust crate,用于读取和写入配置文件。

目前仅支持: JSON5TOMLYAML

但计划稍后添加更多 Serde 支持的格式(如 RON)。

有用的快捷方式

注意:我将从该项目休息1-3个月

我已经连续整个星期在工作,每天/晚上大约 6小时。我现在感到非常疲惫。

我计划在回来后实施下一个大版本发布! (我在 lib.rs 的开头保留整个项目的 TODOs,如果有人想查看的话)

在下一个主要版本发布之前,我还会使用这个crate来工作几个边项目,以便对其进行彻底的测试。

除非有巨大的问题需要修复,否则下一个主要版本可能还会有些远(几周或几个月)。

仍将审查、修复和接受拉取请求和问题!
请随意贡献任何东西,我仍然会很活跃。我只是目前不打算自己实现任何大的新功能。

- Floof


这个crate是什么?

fast_config 是为了提供一个更快设置、更轻量级、静态类型的替代品,与 config

与其他一些配置读取crate相比,它也有一些自己的优势,因为它完全支持写入/保存配置文件,并提供了一些关于配置文件样式的选项


为什么是这个crate?

  • 它小巧且速度快 (使用编译时特性来删除/添加代码)
  • 它安全且健壮 (使用Rust的结构体来存储数据,而不是HashMaps)
  • 极简单易用 (只需3行简短代码即可创建配置文件,写入/读取内容,并保存)

为什么不是这个crate呢?

  1. 如果不了解数据格式,它将无法工作 (例如,如果您希望用户可以在对象中拥有从 key0key9000 的任何键)
  2. 目前无法理解RON文件格式
  3. 目前无法在配置文件中保存注释。

23 将在未来更新中解决。

⚠ 文档和测试仍在制作中! ⚠

此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();
}

入门

  1. 通过以下方式将crate添加到您的项目中:
    cargoadd fast_config
    • 此外,还需要添加 serde,因为它是必需的!

  1. 启用您想使用的格式对应的特性
    • 目前仅支持 json5tomlyaml

  1. 创建一个包含您的数据的struct,该struct继承自 SerializeDeserialize

  1. 创建您的数据struct的实例
  • 可选地使用crate的 Config 类型以方便起见
    use fast_config::Config;

  1. 使用
    let my_config = Config::new("./path/to/my_config_file", your_data).unwrap();
    
    来创建和存储您的配置文件!或者您也可以使用 Config::from_settings 来设置样式并手动设置格式!

查看 示例目录 以获取更多高级示例。

依赖项

~0.4–1.8MB
~40K SLoC