diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-03-17 17:43:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-17 17:43:36 +0100 |
commit | 356f1738105f71548544996214075711b5c6c25f (patch) | |
tree | 9864de98e7b7a30088e77a2741def504d868549b /src | |
parent | 66e3f7d7b5062afe6f58f92cc5db328198ae93cb (diff) | |
parent | 6ab07ddedaac9e4a906e8146f9de1b3a14fb15f2 (diff) |
Merge pull request #172 from matthiasbeyer/add-setter
Add setter for setting config value once
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/config.rs b/src/config.rs index f4d21d5..1019061 100644 --- a/src/config.rs +++ b/src/config.rs @@ -173,6 +173,18 @@ impl Config { self.refresh() } + pub fn set_once(&mut self, key: &str, value: Value) -> Result<()> { + let expr: path::Expression = key.parse()?; + + // Traverse the cache using the path to (possibly) retrieve a value + if let Some(ref mut val) = expr.get_mut(&mut self.cache) { + **val = value; + } else { + expr.set(&mut self.cache, value); + } + Ok(()) + } + pub fn get<'de, T: Deserialize<'de>>(&self, key: &str) -> Result<T> { // Parse the key into a path expression let expr: path::Expression = key.parse()?; |