diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2022-08-01 10:44:20 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2022-08-01 10:44:20 +0200 |
commit | 347e8f32c06baae732c97f9bb98cc05f5dab460d (patch) | |
tree | 287f82e2027722d4c4765a8b2b2f271c856ac4cf /src/config/config.rs | |
parent | 77f3c55117e0f8c7b857c922f2d5f0560aff9369 (diff) |
fixup! WIP: Rewrite to store loaders _and_ loaded configrethink
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")] |