It helps you work with environment variables and convert it to any type using only type annotations.
enve
[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.
Documentation
Look at the [examples] to see the power!
[examples]: https://github.com/pleshevskiy/enve/tree/main/examples
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:
License
MIT. See LICENSE to see the full text.
Contributors
pleshevskiy (Dmitriy Pleshevskiy) โ creator, maintainer.