schema2000/merge/
object.rs

1use crate::merge::object_property;
2use crate::model::ObjectNode;
3use std::collections::HashSet;
4
5pub fn merge_object(a: ObjectNode, b: ObjectNode) -> ObjectNode {
6    let properties_a = a.properties;
7    let properties_b = b.properties;
8
9    let keys_a: HashSet<&String> = properties_a.keys().collect();
10    let keys_b: HashSet<&String> = properties_b.keys().collect();
11    let merged_properties = keys_a
12        .union(&keys_b)
13        .map(|key| {
14            (
15                (*key).to_string(),
16                object_property::merge_object_property(
17                    properties_a.get(*key),
18                    properties_b.get(*key),
19                ),
20            )
21        })
22        .collect();
23
24    ObjectNode {
25        properties: merged_properties,
26    }
27}