yaml-patch

Merge serde_yaml::Value's together to enable hierarchical configurations

Purpose

This crate extends any type which implements serde::Serialize and serde::Deserialize with four additional methods:

For example, given a type

```rust

[derive(Serialize, Deserialize)]

struct Configuration { a: f64, b: String, } ```

you can update the data members of an instance from a serde_yaml::Value::Mapping with optional keys "a" or "b". You can also patch an instance from a file (or anything std::io::Read) with valid YAML content:

rust let file = File::open("config.yaml")?; config.patch_from_reader(file)?;

The crate also supports a key-path style YAML sytax syntax extension: for example event.patch_from_key_val("date.year=2021").

Usage

Add the following to your Cargo.toml: toml [dependencies] yaml-patch = "*"