ConfigMerge

Struct ConfigMerge 

Source
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 override

Implementations§

Source§

impl ConfigMerge

Source

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 override
Source

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 base

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.