mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Use Serde for Transform.
Though this may make us use more space when serializing StyleTransform, but we don't have to do extra conversion on the compostior side, and this makes us easier to maintain the Rust type. Differential Revision: https://phabricator.services.mozilla.com/D60045
This commit is contained in:
parent
238e9ca2fb
commit
5ac08e4780
2 changed files with 29 additions and 0 deletions
|
@ -7,6 +7,8 @@
|
|||
//! A replacement for `Box<[T]>` that cbindgen can understand.
|
||||
|
||||
use malloc_size_of::{MallocShallowSizeOf, MallocSizeOf, MallocSizeOfOps};
|
||||
use serde::de::{Deserialize, Deserializer};
|
||||
use serde::ser::{Serialize, Serializer};
|
||||
use std::marker::PhantomData;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::ptr::NonNull;
|
||||
|
@ -171,3 +173,22 @@ impl<T> iter::FromIterator<T> for OwnedSlice<T> {
|
|||
Vec::from_iter(iter).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Serialize> Serialize for OwnedSlice<T> {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
self.deref().serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de, T: Deserialize<'de>> Deserialize<'de> for OwnedSlice<T> {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let r = Box::<[T]>::deserialize(deserializer)?;
|
||||
Ok(r.into())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue