summaryrefslogtreecommitdiffstats
path: root/src/config/config.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2022-08-01 10:44:20 +0200
committerMatthias Beyer <mail@beyermatthias.de>2022-08-01 10:44:20 +0200
commit347e8f32c06baae732c97f9bb98cc05f5dab460d (patch)
tree287f82e2027722d4c4765a8b2b2f271c856ac4cf /src/config/config.rs
parent77f3c55117e0f8c7b857c922f2d5f0560aff9369 (diff)
fixup! WIP: Rewrite to store loaders _and_ loaded configrethink
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")]