vtcode_config/loader/merge.rs
1/// Recursively merge two TOML values.
2///
3/// If both values are tables, they are merged recursively.
4/// Otherwise, the `overlay` value replaces the `base` value.
5pub fn merge_toml_values(base: &mut toml::Value, overlay: &toml::Value) {
6 match (base, overlay) {
7 (toml::Value::Table(base_table), toml::Value::Table(overlay_table)) => {
8 for (key, value) in overlay_table {
9 if let Some(base_value) = base_table.get_mut(key) {
10 merge_toml_values(base_value, value);
11 } else {
12 base_table.insert(key.clone(), value.clone());
13 }
14 }
15 }
16 (base, overlay) => {
17 *base = overlay.clone();
18 }
19 }
20}