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