1 //! Config organizes hierarchical or layered configurations for Rust applications. 2 //! 3 //! Config lets you set a set of default parameters and then extend them via merging in 4 //! configuration from a variety of sources: 5 //! 6 //! - Environment variables 7 //! - String literals in well-known formats 8 //! - Another Config instance 9 //! - Files: TOML, JSON, YAML, INI, RON, JSON5 and custom ones defined with Format trait 10 //! - Manual, programmatic override (via a `.set` method on the Config instance) 11 //! 12 //! Additionally, Config supports: 13 //! 14 //! - Live watching and re-reading of configuration files 15 //! - Deep access into the merged configuration via a path syntax 16 //! - Deserialization via `serde` of the configuration or any subset defined via a path 17 //! 18 //! See the [examples](https://github.com/mehcode/config-rs/tree/master/examples) for 19 //! general usage information. 20 #![allow(unknown_lints)] 21 // #![warn(missing_docs)] 22 23 pub mod builder; 24 mod config; 25 mod de; 26 mod env; 27 mod error; 28 mod file; 29 mod format; 30 mod map; 31 mod path; 32 mod ser; 33 mod source; 34 mod value; 35 36 pub use crate::builder::{AsyncConfigBuilder, ConfigBuilder}; 37 pub use crate::config::Config; 38 pub use crate::env::Environment; 39 pub use crate::error::ConfigError; 40 pub use crate::file::{File, FileFormat, FileSourceFile, FileSourceString, FileStoredFormat}; 41 pub use crate::format::Format; 42 pub use crate::map::Map; 43 pub use crate::source::{AsyncSource, Source}; 44 pub use crate::value::{Value, ValueKind}; 45