lightningcss/
serialization.rs

1#![allow(non_snake_case)]
2
3macro_rules! wrapper {
4  ($name: ident, $value: ident $(, $t: ty)?) => {
5    #[derive(serde::Serialize, serde::Deserialize)]
6    #[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
7    pub struct $name<T $(= $t)?> {
8      $value: T,
9    }
10
11    impl<'de, T> $name<T> {
12      pub fn serialize<S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
13      where
14        S: serde::Serializer,
15        T: serde::Serialize,
16      {
17        let wrapper = $name { $value: value };
18        serde::Serialize::serialize(&wrapper, serializer)
19      }
20
21      pub fn deserialize<D>(deserializer: D) -> Result<T, D::Error>
22      where
23        D: serde::Deserializer<'de>,
24        T: serde::Deserialize<'de>,
25      {
26        let v: $name<T> = serde::Deserialize::deserialize(deserializer)?;
27        Ok(v.$value)
28      }
29    }
30  };
31}
32
33wrapper!(ValueWrapper, value);
34wrapper!(PrefixWrapper, vendorPrefix, crate::vendor_prefix::VendorPrefix);