virtio-queue-ser 0.14.0

Serialization for virtio queue state
Documentation
# virtio-queue-ser

This crate is a companion to [virtio-queue](https://crates.io/crates/virtio-queue),
focusing on persistent state representation for use cases such as (de)serialization.
The main abstraction is the `QueueStateSer` object, which can be converted to and
from `QueueState` via the provided `From` trait implementations. `virtio-queue-ser` currently
supports (de)serialization of `QueueStateSer` objects via [serde](https://crates.io/crates/serde)
and [versionize](https://crates.io/crates/versionize). The former always serializes the latest
version of `QueueStateSer`, whereas multiple versions will be supported with `versionize` as
breaking changes are introduced to `QueueState` (and, by extension, `QueueStateSer`).

On serialization, the typical workflow is to start from a `state: QueueState` object, obtain
the corresponding `QueueStateSer` (i.e. `state_ser = QueueStateSer::from(&state)`), then write
the serialized data using the underlying backend (i.e. `serde` or `versionize`). When deserializing,
we first get a `state_ser: QueueStateSer` object from the backend, and then convert it to a
`QueueState` (for example, `state = QueueState::from(&state_ser)`).

When a `versionize`-based backend is used, the state transformations required to transition between
versions are transparent to consumers of `virtio-queue-ser`. For example, if an older version of
`QueueStateSer` has been serialized with `versionize`, and we're deserializing based on that data,
then the `QueueStateSer` object obtained via `versionize` will automatically include any changes
required for converting to the current version.

## License

This project is licensed under either of

- [Apache License]http://www.apache.org/licenses/LICENSE-2.0, Version 2.0
- [BSD-3-Clause License]https://opensource.org/licenses/BSD-3-Clause