enve helps you work with environment variables and convert it to any type using only type annotations.
Go to file
Dmitriy Pleshevskiy d5535157ef
ci: fix tests for the msrv
2022-07-25 13:48:20 +03:00
.github ci: add msrv to matrix 2022-07-25 13:20:36 +03:00
.vim refac: improve core design 2022-07-22 13:05:54 +03:00
examples doc: rewrite documentation 2022-07-24 18:53:04 +03:00
src ci: fix tests for the msrv 2022-07-25 13:48:20 +03:00
.gitignore chore: refac gitignore 2022-07-21 19:09:02 +03:00
CODE_OF_CONDUCT.md chore: add code of conduct 2021-02-12 01:31:52 +03:00
Cargo.lock doc: rewrite documentation 2022-07-24 18:53:04 +03:00
Cargo.toml doc: rewrite documentation 2022-07-24 18:53:04 +03:00
LICENSE refac: move core to estring crate 2022-07-23 16:21:53 +03:00
README.md doc: change badges 2022-07-24 19:03:52 +03:00

README.md

enve

GitHub Workflow Status docs.rs Crates.io Crates.io unsafe forbidden Matrix

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

Look at the examples to see the power!

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

Getting started

use enve::SepVec;

type MinusVec<T> = SepVec<T, '-'>;
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<MinusVec<MulVec<f32>>>>("E")
        .unwrap()
        .iter()
        .map(|p| {
            p.iter()
                .map(|m| m.iter().product::<f32>())
                .reduce(|acc, v| acc - v)
                .unwrap_or_default()
        })
        .sum::<f32>();

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

    Ok(())
}

Installation

The MSRV is 1.51.0

Add enve = { version = "0.1", features = ["prim", "vec"] } as a dependency in Cargo.toml.

Cargo.toml example:

[package]
name = "my-crate"
version = "0.1.0"
authors = ["Me <user@rust-lang.org>"]

[dependencies]
enve = { version = "0.1", features = ["prim", "vec"] }

License

MIT. See LICENSE to see the full text.

Contributors

pleshevskiy (Dmitriy Pleshevskiy) creator, maintainer.