yaml-patch

Crates.ioyaml-patch
lib.rsyaml-patch
version0.1.1
sourcesrc
created_at2021-02-14 16:30:55.305138
updated_at2021-02-14 16:32:56.127591
descriptionMerge YAML values together to enable hierarchical configurations
homepage
repositoryhttps://github.com/clemson-cal/yaml-patch
max_upload_size
id355123
size7,337
(jzrake)

documentation

README

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:

  • patch_from_value
  • patch_from_str
  • patch_from_reader
  • patch_from_key_val

For example, given a type

#[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:

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:

[dependencies]
yaml-patch = "*"
Commit count: 6

cargo fmt