1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! Envconfig is a Rust library that helps to initialize configuration structure
//! from environment variables.
//! It makes use of custom derive macros to reduce boilerplate.
//!
//! Example
//!
//! ```
//! #[macro_use]
//! extern crate envconfig_derive;
//! extern crate envconfig;
//!
//! use std::env;
//! use envconfig::Envconfig;
//!
//! #[derive(Envconfig)]
//! struct Config {
//!     #[envconfig(from = "DB_HOST")]
//!     pub db_host: String,
//!
//!     #[envconfig(from = "DB_PORT")]
//!     pub db_port: u16,
//! }
//!
//! fn main() {
//!     // We assume that those environment variables are set somewhere outside
//!     env::set_var("DB_HOST", "localhost");
//!     env::set_var("DB_PORT", "5432");
//!
//!     // Initialize config from environment variables
//!     let config = Config::init().unwrap();
//!
//!     assert_eq!(config.db_host, "localhost");
//!     assert_eq!(config.db_port, 5432);
//! }
//! ```
//!
//! The library uses `std::str::FromStr` trait to convert environment variables into custom
//! data type. So, if your data type does not implement `std::str::FromStr` the program
//! will not compile.

#[macro_use]
extern crate failure;

mod error;
mod traits;
mod utils;

pub use error::Error;
pub use traits::Envconfig;
pub use utils::load_var;