mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
style: Use Serde for SVGOffsetPath.
Differential Revision: https://phabricator.services.mozilla.com/D60087
This commit is contained in:
parent
5ac08e4780
commit
2b3ef3ff37
3 changed files with 35 additions and 1 deletions
|
@ -4,6 +4,8 @@
|
|||
|
||||
//! A thin atomically-reference-counted slice.
|
||||
|
||||
use serde::de::{Deserialize, Deserializer};
|
||||
use serde::ser::{Serialize, Serializer};
|
||||
use servo_arc::ThinArc;
|
||||
use std::ops::Deref;
|
||||
use std::ptr::NonNull;
|
||||
|
@ -60,6 +62,25 @@ impl<T> Default for ArcSlice<T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: Serialize> Serialize for ArcSlice<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 ArcSlice<T> {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let r = Vec::deserialize(deserializer)?;
|
||||
Ok(ArcSlice::from_iter(r.into_iter()))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> ArcSlice<T> {
|
||||
/// Creates an Arc for a slice using the given iterator to generate the
|
||||
/// slice.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue