#config #env-var #variables #environment #parser #ease #decouple

rust-decouple

一个简化环境变量解析过程的简单库

4 个版本

0.2.0 2024 年 8 月 7 日
0.1.2 2024 年 8 月 5 日
0.1.1 2024 年 8 月 5 日
0.1.0 2024 年 8 月 5 日

#567 in Rust 模式

Download history 313/week @ 2024-08-03 15/week @ 2024-08-10

每月 328 次下载

MIT 许可证

10KB
120

Rust-Decouple

Rust decouple 是一个长期项目,旨在模拟 python-decouple 库的功能

由于 Rust 语言的特性,库将以不同的方式实现,但目标是提供类似的功能。到目前为止,库还处于非常早期的开发阶段,尚未准备好使用。

Rust 版本的优点是类型转换将由库自动完成,因此您无需担心。

用法

基本用法

库最基本的使用是从环境中获取一个变量,如果找不到,将返回错误。

use rust_decouple::macros::config;

let my_string: String = config!("VAR_NAME");

如果找不到变量,也可以指定一个默认值

use rust_decouple::macros::config;

let my_string = config!("VAR_NAME", "default_value");

在这种情况下,变量类型将从默认值推断。如果默认值不明确,可以像这样指定类型

use rust_decouple::macros::config;

// The type is annotated by the user
let my_string: u8 = config!("VAR_NAME", 8);

// The type is inferred from the default value
let my_u8 = config!("VAR_NAME", 8u8);

请注意,此默认值的使用不涵盖变量已找到但为空或无效的情况。

向量环境变量

您还可以从环境中获取一个值向量,值应该由逗号分隔,逗号之间没有空格。

use rust_decouple::macros::config_vec;

let my_vec: Vec<String> = config_vec!("VAR_NAME");
let my_vec = config_vec!("VAR_NAME", vec!["1", "2"]);
let my_vec: Vec<u8> = config_vec!("VAR_NAME", vec![1, 2]);

派生特质

您还可以为您的结构体派生 Decouple 特质,这允许您以更结构化的方式从环境中获取值,如下面的示例所示

use rust_decouple::Decouple;

#[derive(Decouple)]
struct Test {
    var_1: u8,
    var_2: Vec<i32>,
    var_3: Vec<String>,
}

fn main() {
    let env_vars = Test::parse();
    println!("{}", env_vars.var_1);
    println!("{:?}", env_vars.var_2);
    println!("{:?}", env_vars.var_3);
}

要使用它,您需要在您的 Cargo.toml 文件中启用功能 derive

[dependencies]
rust_decouple = { version = "0.1", features = ["derive"] }

依赖项

~110KB