serde_env/lib.rs
1//! serde-env will allow deserializing env into structs.
2//!
3//! The biggest different between [envy](https://github.com/softprops/envy) is
4//! serde-env supports deserialize `_` separated env into nests structs. That means
5//! we will treat env as `_` separated tree instead of a flat map.
6//!
7//! For examples:
8//!
9//! ```
10//! use serde::Deserialize;
11//! use serde_env::from_env;
12//!
13//! #[derive(Debug, Deserialize)]
14//! struct Cargo {
15//! home: String,
16//! }
17//!
18//! #[derive(Debug, Deserialize)]
19//! struct Test {
20//! #[cfg(windows)]
21//! #[serde(rename = "userprofile")]
22//! home: String,
23//! #[cfg(not(windows))]
24//! home: String,
25//! cargo: Cargo,
26//! }
27//!
28//! let t: Test = from_env().expect("deserialize from env");
29//!
30//! assert!(!t.home.is_empty());
31//! assert!(!t.cargo.home.is_empty());
32//! println!("{:?}", t)
33//! ```
34
35mod de;
36pub mod error;
37mod value;
38
39pub use de::{from_env, from_env_with_prefix, from_iter, from_iter_with_prefix};
40pub use error::Error;