#env-var #environment #env #annotations #convert #type

enve

它可以帮助您处理环境变量,并通过仅使用类型注解将其转换为任何类型

5 个版本 (重大更改)

0.4.0 2022年12月24日
0.3.0 2022年7月28日
0.2.0 2022年7月27日
0.1.0 2022年7月24日
0.0.0 2022年7月22日

#545 in 配置

MIT 许可证

19KB
292

enve

Crates.io docs.rs GitHub Workflow Status The MSRV

[dependencies]
enve = "0.3"

enve 帮助您处理环境变量,并通过仅使用 类型注解 将其转换为 任何类型

包括所有标准环境变量类型,但 enve 在底层使用 estring,因此您可以轻松地创建自己的类型。

文档

查看 示例 以了解其强大功能!

用法

基本

fn main() -> Result<(), enve::Error> {
    enve::sset("E", "10");

    let res: f32 = enve::get("E")?;

    println!("result: {}", res);

    Ok(())
}

如果您启用 structs 功能,可以使用预定义的结构体,如 SepVec

注意:您可以使用自定义类型作为注解!只需实现 ParseFragment

use enve::SepVec;

type PlusVec<T> = SepVec<T, '+'>;
type MulVec<T> = SepVec<T, '*'>;

fn main() -> Result<(), enve::Error> {
    enve::sset("E", "10+5*2+3");

    let res: f32 = enve::get::<PlusVec<MulVec<f32>>>("E")
        .unwrap()
        .iter()
        .map(|m| m.iter().product::<f32>())
        .sum::<f32>();

    assert_eq!(res, 23.0);

    Ok(())
}

如果您启用 aggs 功能,还可以使用预定义的聚合器。

use enve::{SepVec, Product, Sum, estring::Aggregate};

type PlusVec<T> = SepVec<T, '+'>;
type MulVec<T> = SepVec<T, '*'>;

fn main() -> Result<(), enve::Error> {
    enve::sset("E", "10+5*2+3");

    let res: f32 = enve::get::<Sum<PlusVec<Product<MulVec<f32>>>>>("E")?
        .agg();

    assert_eq!(res, 23.0);

    Ok(())
}

联系我们

加入我们

Matrix

许可证

MIT。请参阅 LICENSE 了解全文。

贡献者

pleshevskiy (Dmitriy Pleshevskiy) – 创建者,维护者。

依赖项

~42KB