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 编码

Apache-2.0 OR BSD-3-Clause

185KB
3K SLoC

virtio-queue-ser

本包是 virtio-queue 的配套包,专注于持久状态表示,用于诸如(反)序列化等用例。主要抽象是 QueueStateSer 对象,可以通过提供的 From 特性实现转换为 QueueStatevirtio-queue-ser 目前支持通过 serdeversionizeQueueStateSer 对象进行(反)序列化。前者始终序列化 QueueStateSer 的最新版本,而 versionize 支持多个版本,因为向 QueueState(以及 QueueStateSer)引入破坏性更改。

序列化时,典型的流程是从一个 state: QueueState 对象开始,获取相应的 QueueStateSer(即 state_ser = QueueStateSer::from(&state)),然后使用底层后端(即 serdeversionize)写入序列化数据。反序列化时,我们首先从后端获取一个 state_ser: QueueStateSer 对象,然后将其转换为 QueueState(例如,state = QueueState::from(&state_ser))。

当使用基于 versionize 的后端时,要在版本之间进行转换所需的状态转换对 virtio-queue-ser 的消费者是透明的。例如,如果一个较老的 QueueStateSer 版本被使用 versionize 序列化,并且我们基于这些数据进行反序列化,那么通过 versionize 获得的 QueueStateSer 对象将自动包含转换为当前版本所需的任何更改。

许可证

本项目受以下任一许可证的许可:

依赖项

~1.6–2.4MB
~50K SLoC