#messagepack #serde #embedded #array #field-name

无标准库 ser-write-msgpack

ser-write 的 MessagePack 序列化器和方便的解序列化器

2 个不稳定版本

0.2.0 2024年5月14日
0.1.0 2024年5月11日

#119无标准库

Download history 245/week @ 2024-05-08 135/week @ 2024-05-15 8/week @ 2024-05-22 3/week @ 2024-05-29

每月 73 次下载

MIT/Apache

205KB
4K SLoC

ser-write-msgpack

Crate Docs Build Status Coverage Status Minimum rustc version

此 crate 提供了一个对 MessagePack 的序列化器,该序列化器使用 serde,并使用 SerWrite 作为写入器,同时提供了一个方便的解序列化器。

使用方法

[dependencies]
ser-write-msgpack = { version = "0.1", default-features = false }

序列化器

ser-write-msgpack 包含了 3 个序列化器:

  • to_writer_compact - 将结构体序列化为数组,并将枚举变体作为索引,
  • to_writer - 将结构体序列化为包含字段和枚举变体的映射,
  • to_writer_named - 将结构体序列化为包含字段名称和枚举变体的字符串的映射。

功能

  • std 启用标准库,
  • alloc 启用 alloc 库,

启用 allocstd 功能时,使用中间 String 实现了 serde::ser::Serializer::collect_str 方法。

否则,Serializer::collect_str 通过格式化字符串两次来实现,一次用于计算字符串大小,第二次用于实际写入。

解序列化器

MessagePack 解序列化器期望一个 MessagePack 编码的字节切片。使用 &str&[u8] 类型从提供的切片中解序列化(使用(零拷贝)引用)。

  • from_slice - 从字节切片中解序列化 MessagePack 数据
  • from_slice_split_tail - 从字节切片中解序列化 MessagePack 数据,返回输入切片的剩余部分

解序列化器支持自描述的格式。

解序列化器使用字符串或索引作为变体或字段标识符,从映射和数组中解序列化结构体。

Rust 版本要求

ser-write-msgpack 需要 Rustc 版本 1.75 或更高。

依赖关系

~110–350KB