schema2000/merge/
object.rs1use 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}