MsgPack binary format for facet.
This crate provides serialization and deserialization for the MessagePack binary format.
Serialization
use facet::Facet; use facet_msgpack::to_vec; #[derive(Facet)] struct Point { x: i32, y: i32 } let point = Point { x: 10, y: 20 }; let bytes = to_vec(&point).unwrap();
Deserialization
There are two deserialization functions:
from_slice: Deserializes into owned types (T: Facet<'static>)from_slice_borrowed: Deserializes with zero-copy borrowing from the input bufferfrom_slice_into: Deserializes into an existingPartial(type-erased, owned)from_slice_into_borrowed: Deserializes into an existingPartial(type-erased, zero-copy)
use facet::Facet; use facet_msgpack::from_slice; #[derive(Facet, Debug, PartialEq)] struct Point { x: i32, y: i32 } // MsgPack encoding of {"x": 10, "y": 20} let bytes = &[0x82, 0xa1, b'x', 0x0a, 0xa1, b'y', 0x14]; let point: Point = from_slice(bytes).unwrap(); assert_eq!(point.x, 10); assert_eq!(point.y, 20);
Deserialization is driven by facet-format over the MessagePack parser, so
all supported Facet shapes use the same parser/deserializer path.