#messagepack #async #binary #byte #compatible #pack #msg-pack

无std msgpck

一个无std和异步兼容的msgpck序列化和反序列化器

3个不稳定版本

0.2.8 2024年3月17日
0.1.0 2023年10月31日

#934 in 编码

Download history

94 每月下载量

Apache-2.0 OR MIT

50KB
1.5K SLoC

一个轻量级的库,用于将类型序列化为MsgPack。

为了限制二进制膨胀,这个库不使用serde。相反,我们提供了[MsgPack]和[MsgUnpack]特质,这些特质可以用于大多数类型。

使用方法

我们还提供了像[pack_vec]和[unpack_slice]这样的函数,用于在rust类型和msgpack字节之间进行转换,但也可以很容易地定义自己的。

以下是一个异步打包函数的简单示例

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;
    }
}

rmp_serde的兼容性

我们的目标是能够反序列化使用rmp_serde序列化的任何值。

待办事项:决定我们是否要更改枚举的序列化表示形式

依赖项

~0.3–1MB
~20K SLoC