chord-core 0.1.21

async parallel case executor
Documentation
pub use serde::Deserialize;
pub use serde::Serialize;
pub use serde_json::error::Error;
pub use serde_json::from_reader;
pub use serde_json::from_slice;
pub use serde_json::from_str;
pub use serde_json::from_value;
pub use serde_json::json;
pub use serde_json::ser::to_string;
pub use serde_json::ser::to_string_pretty;
pub use serde_json::to_value;

pub type Value = serde_json::Value;
pub type Map = serde_json::Map<String, Value>;
pub type Number = serde_json::Number;

pub fn map_merge_deep(old: &Map, new: &Map) -> Map {
    let mut crt = old.clone();
    for (k, v) in new {
        let ov = crt.get(k);
        if let Some(ov) = ov {
            if let Value::Object(ov) = ov {
                if let Value::Object(nv) = v {
                    let mv = map_merge_deep(ov, nv);
                    crt.insert(k.clone(), Value::Object(mv));
                    continue;
                }
            }
        }
        crt.insert(k.clone(), v.clone());
    }
    crt
}