Create proof-of-concept SettingStore struct

This commit is contained in:
Max Brunsfeld 2023-05-03 16:59:44 -07:00
parent c7fcc031eb
commit 5de9652a22
5 changed files with 1559 additions and 742 deletions

View file

@ -93,6 +93,27 @@ pub fn merge_json_value_into(source: serde_json::Value, target: &mut serde_json:
}
}
pub fn merge_non_null_json_value_into(source: serde_json::Value, target: &mut serde_json::Value) {
use serde_json::Value;
if let Value::Object(source_object) = source {
let target_object = if let Value::Object(target) = target {
target
} else {
*target = Value::Object(Default::default());
target.as_object_mut().unwrap()
};
for (key, value) in source_object {
if let Some(target) = target_object.get_mut(&key) {
merge_non_null_json_value_into(value, target);
} else if !value.is_null() {
target_object.insert(key.clone(), value);
}
}
} else if !source.is_null() {
*target = source
}
}
pub trait ResultExt {
type Ok;