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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#![doc = include_str!("README.md")]
#![cfg_attr(docsrs, feature(doc_cfg))]

/// Represents the type alias for a configuration value.
#[cfg(not(feature = "async"))]
pub type Value = std::rc::Rc<String>;

/// Represents the type alias for a configuration value.
#[cfg(feature = "async")]
pub type Value = std::sync::Arc<String>;

mod builder;
mod configuration;
mod path;
mod provider;
mod root;
mod section;
mod source;

/// Contains configuration utility functions.
#[cfg(feature = "util")]
pub mod util;

#[cfg(feature = "chained")]
mod chained;

#[cfg(feature = "std")]
mod default;

#[cfg(feature = "mem")]
mod memory;

#[cfg(feature = "env")]
mod env;

#[cfg(feature = "ini")]
mod ini;

#[cfg(feature = "json")]
mod json;

#[cfg(feature = "cmd")]
mod cmd;

#[cfg(feature = "xml")]
mod xml;

#[cfg(feature = "binder")]
mod binder;

#[cfg(feature = "binder")]
mod de;

mod file;
pub use builder::*;
pub use configuration::*;
pub use file::*;
pub use path::*;
pub use provider::*;
pub use root::*;
pub use section::ConfigurationSection;
pub use source::*;

#[cfg(feature = "util")]
#[cfg_attr(docsrs, doc(cfg(feature = "util")))]
pub use util::*;

#[cfg(feature = "chained")]
#[cfg_attr(docsrs, doc(cfg(feature = "chained")))]
pub use chained::{ChainedConfigurationProvider, ChainedConfigurationSource};

#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use default::*;

#[cfg(feature = "mem")]
#[cfg_attr(docsrs, doc(cfg(feature = "mem")))]
pub use memory::{MemoryConfigurationProvider, MemoryConfigurationSource};

#[cfg(feature = "env")]
#[cfg_attr(docsrs, doc(cfg(feature = "env")))]
pub use env::{EnvironmentVariablesConfigurationProvider, EnvironmentVariablesConfigurationSource};

#[cfg(feature = "ini")]
#[cfg_attr(docsrs, doc(cfg(feature = "ini")))]
pub use ini::{IniConfigurationProvider, IniConfigurationSource};

#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub use json::{JsonConfigurationProvider, JsonConfigurationSource};

#[cfg(feature = "cmd")]
#[cfg_attr(docsrs, doc(cfg(feature = "cmd")))]
pub use cmd::{CommandLineConfigurationProvider, CommandLineConfigurationSource};

#[cfg(feature = "xml")]
#[cfg_attr(docsrs, doc(cfg(feature = "xml")))]
pub use xml::{XmlConfigurationProvider, XmlConfigurationSource};

/// Contains configuration extension methods.
pub mod ext {

    use super::*;

    #[cfg(feature = "chained")]
    #[cfg_attr(docsrs, doc(cfg(feature = "chained")))]
    pub use chained::ext::*;

    #[cfg(feature = "env")]
    #[cfg_attr(docsrs, doc(cfg(feature = "env")))]
    pub use env::ext::*;

    #[cfg(feature = "ini")]
    #[cfg_attr(docsrs, doc(cfg(feature = "ini")))]
    pub use ini::ext::*;

    #[cfg(feature = "json")]
    #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
    pub use json::ext::*;

    #[cfg(feature = "mem")]
    #[cfg_attr(docsrs, doc(cfg(feature = "mem")))]
    pub use memory::ext::*;

    #[cfg(feature = "cmd")]
    #[cfg_attr(docsrs, doc(cfg(feature = "cmd")))]
    pub use cmd::ext::*;

    #[cfg(feature = "xml")]
    #[cfg_attr(docsrs, doc(cfg(feature = "xml")))]
    pub use super::xml::ext::*;

    #[cfg(feature = "binder")]
    #[cfg_attr(docsrs, doc(cfg(feature = "binder")))]
    pub use binder::*;

    #[cfg(feature = "binder")]
    #[cfg_attr(docsrs, doc(cfg(feature = "binder")))]
    pub use de::*;

    pub use section::ext::*;
    pub use file::ext::*;
}