summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-03-17 17:43:36 +0100
committerGitHub <noreply@github.com>2021-03-17 17:43:36 +0100
commit356f1738105f71548544996214075711b5c6c25f (patch)
tree9864de98e7b7a30088e77a2741def504d868549b /src
parent66e3f7d7b5062afe6f58f92cc5db328198ae93cb (diff)
parent6ab07ddedaac9e4a906e8146f9de1b3a14fb15f2 (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.rs12
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()?;