    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

    //! Config organizes hierarchical or layered configurations for Rust applications.
    //!
    //! Config lets you set a set of default parameters and then extend them via merging in
    //! configuration from a variety of sources:
    //!
    //!  - Environment variables
    //!  - String literals in well-known formats
    //!  - Another Config instance
    //!  - Files: TOML, JSON, YAML, INI, RON, JSON5 and custom ones defined with Format trait
    //!  - Manual, programmatic override (via a `.set` method on the Config instance)
    //!
    //! Additionally, Config supports:
    //!
    //!  - Live watching and re-reading of configuration files
    //!  - Deep access into the merged configuration via a path syntax
    //!  - Deserialization via `serde` of the configuration or any subset defined via a path
    //!
    //! See the [examples](https://github.com/mehcode/config-rs/tree/master/examples) for
    //! general usage information.
    #![allow(unknown_lints)]
    // #![warn(missing_docs)]

    pub mod builder;
    mod config;
    mod de;
    mod env;
    mod error;
    mod file;
    mod format;
    mod map;
    mod path;
    mod ser;
    mod source;
    mod value;

    pub use crate::builder::{AsyncConfigBuilder, ConfigBuilder};
    pub use crate::config::Config;
    pub use crate::env::Environment;
    pub use crate::error::ConfigError;
    pub use crate::file::{File, FileFormat, FileSourceFile, FileSourceString, FileStoredFormat};
    pub use crate::format::Format;
    pub use crate::map::Map;
    pub use crate::source::{AsyncSource, Source};
    pub use crate::value::{Value, ValueKind};