diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2022-03-22 09:02:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-22 09:02:25 +0100 |
commit | 56c148ba7912e0c42d3a92eff1e29d50080f28d3 (patch) | |
tree | 0aabc3371f36a434c5c7c4763b510b8753b602db | |
parent | d2d356142430723bbfed102cf8dc41e6fd0aa84e (diff) | |
parent | be7afe91c988169b217971a169acd89f74e50121 (diff) |
Merge pull request #303 from saraiva132/302-add-set-override-option
302-add-set-override-option-combinator
-rw-r--r-- | src/builder.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/builder.rs b/src/builder.rs index 018713c..ee83bfe 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -173,6 +173,26 @@ impl<St: BuilderState> ConfigBuilder<St> { .insert(Expression::from_str(key.as_ref())?, value.into()); Ok(self) } + + /// Sets an override if value is Some(_) + /// + /// This function sets an overwrite value if Some(_) is passed. If None is passed, this function does nothing. + /// It will not be altered by any default, [`Source`] nor [`AsyncSource`] + /// + /// # Errors + /// + /// Fails if `Expression::from_str(key)` fails. + pub fn set_override_option<S, T>(mut self, key: S, value: Option<T>) -> Result<Self> + where + S: AsRef<str>, + T: Into<Value>, + { + if let Some(value) = value { + self.overrides + .insert(Expression::from_str(key.as_ref())?, value.into()); + } + Ok(self) + } } impl ConfigBuilder<DefaultState> { |