7个版本 (破坏性更改)
| 0.9.0 | 2024年3月25日 |
|---|---|
| 0.6.0 | 2023年10月26日 |
| 0.5.0 | 2023年5月17日 |
| 0.4.1 | 2023年2月20日 |
| 0.3.0 | 2022年7月29日 |
#420 in 编码
185KB
3K SLoC
virtio-queue-ser
本包是 virtio-queue 的配套包,专注于持久状态表示,用于诸如(反)序列化等用例。主要抽象是 QueueStateSer 对象,可以通过提供的 From 特性实现转换为 QueueState。 virtio-queue-ser 目前支持通过 serde 和 versionize 对 QueueStateSer 对象进行(反)序列化。前者始终序列化 QueueStateSer 的最新版本,而 versionize 支持多个版本,因为向 QueueState(以及 QueueStateSer)引入破坏性更改。
序列化时,典型的流程是从一个 state: QueueState 对象开始,获取相应的 QueueStateSer(即 state_ser = QueueStateSer::from(&state)),然后使用底层后端(即 serde 或 versionize)写入序列化数据。反序列化时,我们首先从后端获取一个 state_ser: QueueStateSer 对象,然后将其转换为 QueueState(例如,state = QueueState::from(&state_ser))。
当使用基于 versionize 的后端时,要在版本之间进行转换所需的状态转换对 virtio-queue-ser 的消费者是透明的。例如,如果一个较老的 QueueStateSer 版本被使用 versionize 序列化,并且我们基于这些数据进行反序列化,那么通过 versionize 获得的 QueueStateSer 对象将自动包含转换为当前版本所需的任何更改。
许可证
本项目受以下任一许可证的许可:
- Apache License,版本 2.0
- BSD-3-Clause 许可证
依赖项
~1.6–2.4MB
~50K SLoC