2个版本
0.1.1 | 2023年11月28日 |
---|---|
0.1.0 | 2023年11月28日 |
#1565 in 编码
在 2 个crate中使用 (通过 lssg-lib)
4KB
50 代码行
Serde扩展
覆盖
覆盖结构体的所有值
use std::{collections::HashMap, path::PathBuf};
use serde_extension::Overwrite;
use toml::Value;
#[derive(Debug, Overwrite)]
struct Test {
a: PathBuf,
b: String,
c: Vec<String>,
d: u32,
e: HashMap<String, String>,
}
const TEST_TOML: &'static str = r#"
a = "/test/asdf"
c = ["c", "c"]
[e]
test="asdf"
"#;
pub fn main() {
let mut e = HashMap::new();
e.insert("test", "fdsa");
let mut test = Test {
a: PathBuf::default(),
b: "b".into(),
c: vec!["asdf".into()],
d: 0,
e: HashMap::new(),
};
let value: Value = toml::from_str(TEST_TOML).unwrap();
test.overwrite(value).unwrap();
assert_eq!(
format!("{test:?}"),
r#"Test { a: "/test/asdf", b: "b", c: ["c", "c"], d: 0, e: {"test": "asdf"} }"#
)
}
依赖项
~0.4–1MB
~23K SLoC