Create proof-of-concept SettingStore struct
This commit is contained in:
parent
c7fcc031eb
commit
5de9652a22
5 changed files with 1559 additions and 742 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue