1 unstable release
0.1.0 | May 31, 2023 |
---|
#2039 in Parser implementations
66KB
911 lines
Renvar
renvar
is a library to deserialize environment variables into Rust data structures.
Huge thanks to softprops for envy, as this library is inspired by it and borrows much of the code from there.
Installation
Add it to your Cargo.toml
[dependencies]
renvar = "0.1"
Usage
use renvar::{from_env, from_iter, from_str};
use serde::Deserialize;
use std::env;
let env_content = r#"
name=renvar
type=Library
dependencies=serde
"#;
#[derive(Debug, Deserialize, PartialEq, Eq)]
enum CrateType {
Library,
Binary,
}
#[derive(Debug, Deserialize, PartialEq, Eq)]
struct Renvar {
name: String,
#[serde(rename = "type")]
typ: CrateType,
dependencies: Vec<String>,
}
let actual = Renvar {
name: "renvar".to_owned(),
typ: CrateType::Library,
dependencies: vec!["serde".to_owned()],
};
// we can read from strings
let value = from_str::<Renvar>(env_content).unwrap();
assert_eq!(value, actual);
// directly from the environment
let envs = vec![
("name".to_owned(), "renvar".to_owned()),
("type".to_owned(), "Library".to_owned()),
("dependencies".to_owned(), "serde".to_owned()),
];
for (key, value) in envs.clone().into_iter() {
env::set_var(key, value);
}
let value = from_env::<Renvar>().unwrap();
assert_eq!(value, actual);
// or from iterables
let value = from_iter::<Renvar, _>(envs).unwrap();
assert_eq!(value, actual);
Feature flags
Renvar has the following feature flags:
prefixed
prefixed
gives you the prefixed
function, that accepts a prefix. The prefixes will be stripped away
before deserialization.
postfixed
postfix
is exactly the same as prefix, just with postfixes
case_insensitive_prefixed
Case insensitive variant of prefixed
case_insensitive_postfixed
Case insensitive variant of postfixed
with_trimmer
Finally, the with_trimmer
feature flag gives you *_with_trimmer
variants for all of the above,
where you can strip extraneous characters off of the beginning and end of envrironment variables
by passing a closure.
Supported datatypes
Strings
andstr
senums
sequences
Unit structs
Development
Tests
If you have just, you run just test
,
otherwise cargo test --all-features
Dependencies
~105–335KB