2个版本
0.1.1 | 2019年7月1日 |
---|---|
0.1.0 | 2019年7月1日 |
#29 in #ext
6KB
88 行
serde-ext
对serde的扩展/辅助工具
使用方法
#[serde_ext::extend_serde]
#[derive(Debug, serde::Deserialize)]
pub struct Foo {
#[serde_ext(default(literal = 23))]
a: i32,
#[serde_ext(default(inline = r#"|| String::from("Hello") "#))]
b: String,
#[serde(deserialize_with = "serde_ext::de::parsable")]
url: url::Url,
#[serde(with = "serde_ext::base64")]
base64_bytes: Vec<u8>,
#[serde(deserialize_with = "serde_ext::de::non_empty_string")]
non_empty_string: Option<String>
}
fn main() {
println!(
"{:?}",
serde_json::from_str::<Foo>(r#"{
"a": 22,
"bar": "x",
"url": "http://google.com",
"base64_bytes": "aGVsbG8gd29ybGQ=",
"non_empty_string": "a"
}"#)
);
}
依赖
~3–4.5MB
~85K SLoC