lightningcss/
serialization.rs1#![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);