mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
data_model: make endian types Serialize and Deserialize
By using these traits in crosvm, we also add serde as a dependency. BUG=b:176847362 TEST=run_tests Cq-Depend: chromium:2729637 Change-Id: Icd16a6e163d9e1dedbe3924cb94f29d777eb2216 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2613690 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Tested-by: Zach Reizner <zachr@chromium.org> Commit-Queue: Zach Reizner <zachr@chromium.org>
This commit is contained in:
parent
4f41c7ebc7
commit
4f3f332209
3 changed files with 43 additions and 1 deletions
21
Cargo.lock
generated
21
Cargo.lock
generated
|
@ -230,6 +230,7 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"assertions",
|
||||
"libc",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -877,6 +878,26 @@ dependencies = [
|
|||
"sync",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.121"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6159e3c76cab06f6bc466244d43b35e77e9500cd685da87620addadc2a4c40b1"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.121"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3fcab8778dc651bc65cfab2e4eb64996f3c912b74002fb379c94517e1f27c46"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.2"
|
||||
|
|
|
@ -8,5 +8,6 @@ include = ["src/**/*", "Cargo.toml"]
|
|||
[dependencies]
|
||||
assertions = { path = "../assertions" } # provided by ebuild
|
||||
libc = "*"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
|
||||
[workspace]
|
||||
|
|
|
@ -30,9 +30,11 @@
|
|||
//! assert_ne!(b_trans, l_trans);
|
||||
//! ```
|
||||
|
||||
use assertions::const_assert;
|
||||
use std::mem::{align_of, size_of};
|
||||
|
||||
use assertions::const_assert;
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
|
||||
use crate::DataInit;
|
||||
|
||||
macro_rules! endian_type {
|
||||
|
@ -80,6 +82,24 @@ macro_rules! endian_type {
|
|||
$new_type($old_type::$to_new(v))
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for $new_type {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
self.to_native().serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for $new_type {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
Ok($old_type::deserialize(deserializer)?.into())
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue