2 releases
0.1.1 | Feb 8, 2023 |
---|---|
0.1.0 | Jan 26, 2023 |
#183 in #settings
50 downloads per month
7KB
67 lines
config-source
Macro for deriving config-rs's config::Source
trait.
Usage
[dependencies]
config = "0.13"
config-source = "0.1"
More
See the documentation for more usage information.
lib.rs
:
config-source
Macro for deriving config-rs's config::Source
trait.
Usage
To derive config::Source
for a struct, simply add the #[derive(ConfigSource)]
attribute to
the struct:
#[derive(serde::Deserialize, config_source::ConfigSource, Clone, Debug)]
pub struct MyConfig {
pub question: String,
pub answer: u64,
}
impl Default for MyConfig {
fn default() -> Self {
Self {
question: String::from("The Ultimate Question of Life, the Universe, and Everything"),
answer: 42,
}
}
}
Then, you can use the config::Config
struct to load your configuration using a default value:
#
#
let config = config::Config::builder()
.add_source(MyConfig::default()) // Default value as source!
.add_source(config::File::with_name("my_config.toml").required(false))
.add_source(config::Environment::with_prefix("MY_CONFIG").separator("__"))
.build()
.expect("Failed to build `MyConfig`");
Dependencies
~2MB
~44K SLoC