diff options
Diffstat (limited to 'src/config/config.rs')
-rw-r--r-- | src/config/config.rs | 21 |
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")] |