2 releases
0.1.1 | Feb 14, 2021 |
---|---|
0.1.0 | Feb 14, 2021 |
#1966 in Encoding
8KB
95 lines
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 = "*"
Dependencies
~1.8–2.5MB
~52K SLoC