Skip to content
This repository has been archived by the owner on Mar 1, 2023. It is now read-only.
/ enve Public archive

It helps you work with environment variables and convert it to any type using only type annotations.

License

Notifications You must be signed in to change notification settings

pleshevskiy/enve

Repository files navigation

enve

Crates.io docs.rs GitHub Workflow Status The MSRV

[dependencies]
enve = "0.3"

enve helps you work with environment variables and convert it to any type using only type annotations.

All standard environment variable types are included, but enve under the hood uses estring, so you can easily create your own type.

Look at the examples to see the power!

Usage

Basic

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

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

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

    Ok(())
}

You can use predefined structs like SepVec if you enable structs feature.

Note: You can use custom types as annotations! Just implement 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(())
}

You can also use predefined aggregators if you enable aggs feature.

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

Contact Us

Join us in:

Matrix

License

MIT. See LICENSE to see the full text.

Contributors

pleshevskiy (Dmitriy Pleshevskiy) – creator, maintainer.

About

It helps you work with environment variables and convert it to any type using only type annotations.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •