summaryrefslogtreecommitdiffstats
path: root/src/config/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/config.rs')
-rw-r--r--src/config/config.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/config/config.rs b/src/config/config.rs
index 3442acb..568b3fa 100644
--- a/src/config/config.rs
+++ b/src/config/config.rs
@@ -36,6 +36,7 @@ impl<'source> Config<'source> {
{
let mut layers = config.layers.write().unwrap();
+ #[allow(irrefutable_let_patterns)]
if let Builder::Sync(builder) = &config.builder {
*layers = Some(builder.reload()?);
} else {
@@ -50,12 +51,22 @@ impl<'source> Config<'source> {
pub(super) async fn build_from_async_builder(
builder: AsyncConfigBuilder<'source>,
) -> Result<Config<'source>, ConfigError> {
- let layers = builder.reload().await?;
-
- Ok(Config {
- layers: RwLock::new(Some(layers)),
+ let config = Config {
+ layers: RwLock::new(None),
builder: Builder::Async(builder),
- })
+ };
+
+ {
+ let l = match config.builder {
+ Builder::Sync(ref builder) => builder.reload()?,
+ Builder::Async(ref builder) => builder.reload().await?,
+ };
+
+ let mut layers = config.layers.write().unwrap();
+ *layers = Some(l);
+ }
+
+ Ok(config)
}
#[cfg(feature = "async")]