Expand description
Environment-Variable configuration parser.
This is only usable if you enabled env Cargo feature.
§Example
use plugx_config::parser::{Parser, env::Env};
use plugx_input::Input;
let bytes = br#"
FOO__BAR__BAZ=Qux
FOO__BAR__ABC=3.14 # Comments are supported!
FOO__XYZ=false
HELLO='["w", "o", "l", "d"]' # A JSON list
"#;
let parser = Env::new();
// You can set nested key separator like this:
// parser.set_key_separator("__");
let parsed: Input = parser.parse(bytes.as_slice()).unwrap();
assert!(
parsed.as_map().len() == 2 &&
parsed.as_map().contains_key("foo") &&
parsed.as_map().contains_key("hello")
);
let foo = parsed.as_map().get("foo").unwrap();
assert!(
foo.as_map().len() == 2 &&
foo.as_map().contains_key("bar") &&
foo.as_map().contains_key("xyz")
);
let bar = foo.as_map().get("bar").unwrap();
assert_eq!(bar.as_map().get("baz").unwrap(), &"Qux".into());
assert_eq!(bar.as_map().get("abc").unwrap(), &3.14.into());
let xyz = foo.as_map().get("xyz").unwrap();
assert_eq!(xyz, &false.into());
let list = ["w", "o", "l", "d"].into();
assert_eq!(parsed.as_map().get("hello").unwrap(), &list);