This repository has been archived on 2024-07-25. You can view files and clone it, but cannot push or open issues or pull requests.
enve/README.md

2 KiB
Raw Blame History

enve

CI unsafe forbidden Documentation Crates.io Crates.io

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.