#serde-yaml #configuration #merge #hierarchical #together #value #patch

yaml-patch

将 YAML 值合并以实现分层配置

2 个版本

0.1.1 2021 年 2 月 14 日
0.1.0 2021 年 2 月 14 日

#1819编码

Download history 37/week @ 2024-04-01 20/week @ 2024-04-22 1/week @ 2024-05-27

每月 54 次下载

MIT 许可证

8KB
95

yaml-patch

serde_yaml::Value 合并,以实现分层配置

目的

此 crate 扩展了任何实现了 serde::Serializeserde::Deserialize 的类型,并添加了四个额外的方法

  • patch_from_value
  • patch_from_str
  • patch_from_reader
  • patch_from_key_val

例如,给定一个类型

#[derive(Serialize, Deserialize)]
struct Configuration {
   a: f64,
   b: String,
}

您可以使用可选键 "a""b" 更新实例的数据成员,从 serde_yaml::Value::Mapping 中。您还可以从文件(或任何有效的 YAML 内容的 std::io::Read)中修补实例

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

此 crate 还支持键路径样式 YAML 语法扩展:例如 event.patch_from_key_val("date.year=2021")

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
yaml-patch = "*"

依赖关系

~1.9–2.6MB
~54K SLoC