#serialization #version #compile-time #data #immutability #deserialize #semver

vbs

版本标记的序列化适配器,支持编译时版本检查

4个版本

0.1.6 2024年6月3日
0.1.5 2024年5月29日
0.1.4 2024年4月1日
0.1.3 2024年3月27日

#508 in 编码

Download history 608/week @ 2024-04-24 879/week @ 2024-05-01 435/week @ 2024-05-08 381/week @ 2024-05-15 510/week @ 2024-05-22 1369/week @ 2024-05-29 644/week @ 2024-06-05 531/week @ 2024-06-12 405/week @ 2024-06-19 488/week @ 2024-06-26 195/week @ 2024-07-03 305/week @ 2024-07-10 588/week @ 2024-07-17 650/week @ 2024-07-24 421/week @ 2024-07-31 587/week @ 2024-08-07

2,299 monthly downloads
2 crates 中使用

MIT 许可证

16KB
346

vbs

提供以下功能

  • 一个用于在编译时约束到(主.次)版本的 trait StaticVersionType
    • 封闭为一个 struct StaticVersion<const MAJOR: u16, const MINOR: u16>
    • 对于版本强制执行的目的,补丁版本不被视为类型变化。
  • 一个 struct Version,用于运行时对版本的操作,无需使用 dyn
    • 用于以严格定义和不可变的形式 [反] 序列化版本,以便于对序列化格式本身的更新可以成为版本控制属性。
    • 不包括补丁级别、预发布标识符或构建元数据;这不是一个通用目的的 semver crate。
  • 一个 trait BinarySerializer,一个适配器,可以围绕任何适配 serde 数据模型的数据格式实现。
    • 默认情况下,在每个顶级序列化之前序列化版本前缀,并在反序列化已序列化的消息时验证版本兼容性。
    • 支持未标记版本的 [de]serialize_no_version 操作,默认情况下,这应该简单地等同于调用 type.serialize(serializer) 对嵌入的序列化器。
  • 针对现有数据格式的实现

依赖关系

~1.3–2MB
~42K SLoC