Type-based Serialization and Deserialization
Serde provides a mechanism for low boilerplate serialization & deserialization of values to and
from MessagePack via the serialization API. To be able to serialize a piece of data, it must
implement the serde::Serialize
trait. To be able to deserialize a piece of data, it must
implement the serde::Deserialize
trait. Serde provides provides an annotation to
automatically generate the code for these traits: #[derive(Serialize, Deserialize)]
.
Examples
Let's try to encode and decode some built-in types.
extern crate serde;
extern crate rmp_serde as rmps;
use ;
use ;
No one gonna hurt if we add some reflection magic.
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate rmp_serde as rmps;
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use rmps::{Deserializer, Serializer};
#[derive(Debug, PartialEq, Deserialize, Serialize)]
struct Human {
age: u32,
name: String,
}
fn main() {
let mut buf = Vec::new();
let val = Human {
age: 42,
name: "John".into(),
};
val.serialize(&mut Serializer::new(&mut buf)).unwrap();
}