Skip to main content

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}