Crate msgpck

source ·
Expand description

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

Modules§

  • Helpers for packing/unpacking certain msgpack values.

Structs§

  • The header/key of a msgpack-encoded enum value.

Enums§

Traits§

  • Trait for serializing a type using msgpack.
  • Trait for deserializing a type using msgpack.

Functions§

Derive Macros§