3 个版本
使用旧的 Rust 2015
0.1.2 | 2018 年 3 月 5 日 |
---|---|
0.1.1 | 2018 年 3 月 2 日 |
0.1.0 | 2018 年 3 月 2 日 |
#2108 在 编码
93KB
Desert
甜点是 SerDe 之上的一颗樱桃(顶端),简化了自定义 serialize
和 deserialize
特性。
为什么
编写访问者/反序列化和序列化特性可能会相当烦人,有时你只是知道如何将你的结构体转换成另一种符合你需求的形式。使用 dessert,你只需要创建一个中间结构体和 From/Into 特性来转换到它,并告诉 dessert 使用这个结构体作为中间。
示例
你可以使用以下命令运行示例:$cargo run --examples demo
#[macro_use]
extern crate dessert_derive;
extern crate dessert;
extern crate serde;
extern crate serde_json;
#[macro_use]
extern crate serde_derive;
use dessert::ViaDeserialize;
#[derive(ViaDeserialize, Debug)]
#[via(Intermediate)]
struct FrenchToast {
ingredient: String,
}
#[derive(Deserialize)]
struct Intermediate {
val: String,
}
impl From<Intermediate> for FrenchToast {
fn from(b: Intermediate) -> Self {
Self { ingredient: b.val }
}
}
fn main() {
let serialized_string= "{\"val\":\"Butter\"}";
let v: FrenchToast = serde_json::from_str(serialized_string).unwrap();
println!("Serialized form: {}", serialized_string);
println!("Debug format : {:?}", v)
}
// Serialized form: {"val":"Butter"}
// Debug format : FrenchToast { ingredient: "Butter" }
依赖项
~0.4–1MB
~24K SLoC