pub struct ConfigMerge;Expand description
Configuration merge utilities for combining configurations with priority
This utility provides methods to merge two configuration instances with various merge strategies. Useful for layered configuration systems where settings can come from multiple sources (defaults → file → environment → CLI).
§Examples
use chie_shared::{ConfigMerge, FeatureFlags};
// OR merge: feature enabled if enabled in either config
let base = FeatureFlags {
experimental: true,
beta: false,
..FeatureFlags::none()
};
let override_flags = FeatureFlags {
experimental: false,
beta: true,
..FeatureFlags::none()
};
let merged = ConfigMerge::feature_flags(&base, &override_flags, false);
assert!(merged.experimental); // true from base
assert!(merged.beta); // true from overrideImplementations§
Source§impl ConfigMerge
impl ConfigMerge
Sourcepub fn retry_config(
_base: &RetryConfig,
override_config: &RetryConfig,
) -> RetryConfig
pub fn retry_config( _base: &RetryConfig, override_config: &RetryConfig, ) -> RetryConfig
Merge two RetryConfig instances with override semantics
The override_config takes priority over base_config for all fields.
This is useful for layered configuration where CLI args override file config, etc.
§Examples
use chie_shared::{ConfigMerge, RetryConfig};
let base = RetryConfig {
max_attempts: 5,
initial_backoff_ms: 200,
..RetryConfig::default()
};
let override_config = RetryConfig {
max_attempts: 10,
..RetryConfig::default()
};
let merged = ConfigMerge::retry_config(&base, &override_config);
assert_eq!(merged.max_attempts, 10); // From overrideSourcepub fn feature_flags(
base: &FeatureFlags,
override_flags: &FeatureFlags,
override_all: bool,
) -> FeatureFlags
pub fn feature_flags( base: &FeatureFlags, override_flags: &FeatureFlags, override_all: bool, ) -> FeatureFlags
Merge two FeatureFlags instances
If override_all is true, the override_flags completely replaces base_flags.
If override_all is false, features are merged with OR logic (a feature is enabled
if it’s enabled in either base or override).
§Examples
use chie_shared::{ConfigMerge, FeatureFlags};
let base = FeatureFlags::all();
let override_flags = FeatureFlags::none();
// Complete override - all features disabled
let merged = ConfigMerge::feature_flags(&base, &override_flags, true);
assert!(!merged.experimental);
assert!(!merged.beta);
// OR merge - features enabled if enabled in either
let merged = ConfigMerge::feature_flags(&base, &override_flags, false);
assert!(merged.experimental); // Enabled in base
assert!(merged.beta); // Enabled in baseAuto Trait Implementations§
impl Freeze for ConfigMerge
impl RefUnwindSafe for ConfigMerge
impl Send for ConfigMerge
impl Sync for ConfigMerge
impl Unpin for ConfigMerge
impl UnwindSafe for ConfigMerge
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more