3 unstable releases
0.2.8 | Mar 17, 2024 |
---|---|
0.1.0 | Oct 31, 2023 |
#1921 in Encoding
32 downloads per month
50KB
1.5K
SLoC
A light-weight library for serializing/deserializing types as MsgPack.
To limit binary bloat, this library doesn't use serde. Insetead, we provide the [MsgPack] and [MsgUnpack] traits, which can be derived for most types.
Usage
We also provide functions like [pack_vec] and [unpack_slice] to convert between rust types and msgpack bytes, but it's easy to define your own.
Here is a simple example of an async pack function:
use msgpck::MsgPack;
trait AsyncWrite {
async fn write(&mut self, bytes: &[u8]);
}
async fn async_pack(writer: &mut impl AsyncWrite, msg: &impl MsgPack) {
for piece in msg.pack() {
writer.write(piece.as_bytes()).await;
}
}
Compatibility with rmp_serde
We aim to be able to deserialize any value serialized using rmp_serde.
TODO: decide if we're gonna change serialized representation of enums
Dependencies
~0.3–0.9MB
~20K SLoC