1#![doc = include_str!("README.md")]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3
4#[cfg(not(feature = "async"))]
6pub type Value = std::rc::Rc<String>;
7
8#[cfg(feature = "async")]
10pub type Value = std::sync::Arc<String>;
11
12mod builder;
13mod configuration;
14mod path;
15mod provider;
16mod root;
17mod section;
18mod source;
19
20#[cfg(feature = "util")]
22pub mod util;
23
24#[cfg(feature = "chained")]
25mod chained;
26
27#[cfg(feature = "std")]
28mod default;
29
30#[cfg(feature = "mem")]
31mod memory;
32
33#[cfg(feature = "env")]
34mod env;
35
36#[cfg(feature = "ini")]
37mod ini;
38
39#[cfg(feature = "json")]
40mod json;
41
42#[cfg(feature = "cmd")]
43mod cmd;
44
45#[cfg(feature = "xml")]
46mod xml;
47
48#[cfg(feature = "binder")]
49mod binder;
50
51#[cfg(feature = "binder")]
52mod de;
53
54mod file;
55pub use builder::*;
56pub use configuration::*;
57pub use file::*;
58pub use path::*;
59pub use provider::*;
60pub use root::*;
61pub use section::ConfigurationSection;
62pub use source::*;
63
64#[cfg(feature = "util")]
65#[cfg_attr(docsrs, doc(cfg(feature = "util")))]
66pub use util::*;
67
68#[cfg(feature = "chained")]
69#[cfg_attr(docsrs, doc(cfg(feature = "chained")))]
70pub use chained::{ChainedConfigurationProvider, ChainedConfigurationSource};
71
72#[cfg(feature = "std")]
73#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
74pub use default::*;
75
76#[cfg(feature = "mem")]
77#[cfg_attr(docsrs, doc(cfg(feature = "mem")))]
78pub use memory::{MemoryConfigurationProvider, MemoryConfigurationSource};
79
80#[cfg(feature = "env")]
81#[cfg_attr(docsrs, doc(cfg(feature = "env")))]
82pub use env::{EnvironmentVariablesConfigurationProvider, EnvironmentVariablesConfigurationSource};
83
84#[cfg(feature = "ini")]
85#[cfg_attr(docsrs, doc(cfg(feature = "ini")))]
86pub use ini::{IniConfigurationProvider, IniConfigurationSource};
87
88#[cfg(feature = "json")]
89#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
90pub use json::{JsonConfigurationProvider, JsonConfigurationSource};
91
92#[cfg(feature = "cmd")]
93#[cfg_attr(docsrs, doc(cfg(feature = "cmd")))]
94pub use cmd::{CommandLineConfigurationProvider, CommandLineConfigurationSource};
95
96#[cfg(feature = "xml")]
97#[cfg_attr(docsrs, doc(cfg(feature = "xml")))]
98pub use xml::{XmlConfigurationProvider, XmlConfigurationSource};
99
100pub mod ext {
102
103 use super::*;
104
105 #[cfg(feature = "chained")]
106 #[cfg_attr(docsrs, doc(cfg(feature = "chained")))]
107 pub use chained::ext::*;
108
109 #[cfg(feature = "env")]
110 #[cfg_attr(docsrs, doc(cfg(feature = "env")))]
111 pub use env::ext::*;
112
113 #[cfg(feature = "ini")]
114 #[cfg_attr(docsrs, doc(cfg(feature = "ini")))]
115 pub use ini::ext::*;
116
117 #[cfg(feature = "json")]
118 #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
119 pub use json::ext::*;
120
121 #[cfg(feature = "mem")]
122 #[cfg_attr(docsrs, doc(cfg(feature = "mem")))]
123 pub use memory::ext::*;
124
125 #[cfg(feature = "cmd")]
126 #[cfg_attr(docsrs, doc(cfg(feature = "cmd")))]
127 pub use cmd::ext::*;
128
129 #[cfg(feature = "xml")]
130 #[cfg_attr(docsrs, doc(cfg(feature = "xml")))]
131 pub use super::xml::ext::*;
132
133 #[cfg(feature = "binder")]
134 #[cfg_attr(docsrs, doc(cfg(feature = "binder")))]
135 pub use binder::*;
136
137 #[cfg(feature = "binder")]
138 #[cfg_attr(docsrs, doc(cfg(feature = "binder")))]
139 pub use de::*;
140
141 pub use section::ext::*;
142 pub use file::ext::*;
143}