pub struct SourcedValue<T> {
pub value: T,
pub source: ConfigSource,
pub origin: Option<String>,
}Expand description
A config value with its provenance: which kind of source set it, and for
file-based sources, which file. The origin makes rumdl config output
file-precise, which matters for extends chains where the source kind
alone cannot distinguish the base config from the extending one.
Fields§
§value: T§source: ConfigSource§origin: Option<String>Path of the config file that supplied the winning value. None for
defaults and CLI flags.
Implementations§
Source§impl<T: Clone> SourcedValue<T>
impl<T: Clone> SourcedValue<T>
pub fn new(value: T, source: ConfigSource) -> Self
Sourcepub fn merge_override(
&mut self,
new_value: T,
new_source: ConfigSource,
new_origin: Option<String>,
) -> bool
pub fn merge_override( &mut self, new_value: T, new_source: ConfigSource, new_origin: Option<String>, ) -> bool
Merges a new value into this SourcedValue based on source precedence. If the new source has higher or equal precedence, the value, source, and origin are replaced.
Returns whether the incoming value won, which is what a caller tracking something about the value alongside it needs in order to follow it.
Sourcepub fn merge_from(&mut self, other: SourcedValue<T>) -> bool
pub fn merge_from(&mut self, other: SourcedValue<T>) -> bool
Merge another SourcedValue with replace semantics. See
Self::merge_override for the return value.
Sourcepub fn push_override(
&mut self,
value: T,
source: ConfigSource,
origin: Option<String>,
)
pub fn push_override( &mut self, value: T, source: ConfigSource, origin: Option<String>, )
Sets the value unconditionally (no precedence check). Used while parsing a single file, where later keys legitimately replace earlier ones regardless of source.
Source§impl<T: Clone + Eq + Hash> SourcedValue<Vec<T>>
impl<T: Clone + Eq + Hash> SourcedValue<Vec<T>>
Sourcepub fn merge_union(
&mut self,
new_value: Vec<T>,
new_source: ConfigSource,
new_origin: Option<String>,
)
pub fn merge_union( &mut self, new_value: Vec<T>, new_source: ConfigSource, new_origin: Option<String>, )
Merges a new value using union semantics (for arrays like extend-disable):
values from both sources are combined, with deduplication. The origin
reflects the most recent contributor.
Sourcepub fn merge_union_from(&mut self, other: SourcedValue<Vec<T>>)
pub fn merge_union_from(&mut self, other: SourcedValue<Vec<T>>)
Merge another SourcedValue with union semantics.
Trait Implementations§
Source§impl<T: Clone> Clone for SourcedValue<T>
impl<T: Clone> Clone for SourcedValue<T>
Source§fn clone(&self) -> SourcedValue<T>
fn clone(&self) -> SourcedValue<T>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more