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 模式
每月 328 次下载
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