1个稳定版本

使用旧的Rust 2015

1.0.0 2020年2月17日

#78#配置管理


用于 项目

MIT/X11 OR Apache-2.0

10KB
87

confy

Join the chat at https://gitter.im/rust-clique/confy

零样板配置管理。

专注于存储正确的数据,而不是担心如何存储。

#[derive(Serialize, Deserialize)]
struct MyConfig {
    version: u8,
    api_key: String,
}

/// `MyConfig` implements `Default`
impl ::std::ops::Default for MyConfig {
    fn default() -> Self { Self { version: 0, api_key: "".into() } }
}

fn main() -> Result<(), ::std::io::Error> {
    let cfg = confy::load("my-app-name")?;
}

lib.rs:

零样板配置管理

为什么?

在根据操作系统和其他环境因素选择、加载和编写配置时,有许多不同的要求。

在许多应用程序中,这种负担留给了你,即应用程序的开发者,去决定配置文件应该放在哪里。

这就是confy发挥作用的地方。

想法

confy负责在读取和写入配置之前确定操作系统特定的和环境路径。

它通过serde提供对配置文件的轻松访问,并将其映射到一个Rust struct。这样,你只需要担心配置的布局,而不需要担心存储的位置和方式。

confy使用Rust中的Default特质自动创建一个新的配置(如果尚未提供读取配置),这意味着你可以简单地假设你的应用程序具有配置,该配置将使用你选择的默认值创建,而不需要任何特殊的逻辑来处理创建。

#[derive(Serialize, Deserialize)]
struct MyConfig {
    version: u8,
    api_key: String,
}

/// `MyConfig` implements `Default`
impl ::std::default::Default for MyConfig {
    fn default() -> Self { Self { version: 0, api_key: "".into() } }
}

fn main() -> Result<(), ::std::io::Error> {
    let cfg = confy::load("my-app-name")?;
}

然后通过store函数来更新配置。

依赖关系

~375–790KB
~13K SLoC