derse/impls/
phantom_data.rs

1use crate::*;
2use std::marker::PhantomData;
3
4impl<T> Serialize for PhantomData<T> {
5    fn serialize_to<S: Serializer>(&self, _: &mut S) -> Result<()> {
6        Ok(())
7    }
8}
9
10impl<'a, T> Deserialize<'a> for PhantomData<T> {
11    fn deserialize_from<D: Deserializer<'a>>(_: &mut D) -> Result<Self>
12    where
13        Self: Sized,
14    {
15        Ok(Default::default())
16    }
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22
23    #[test]
24    fn test_phantom_data() {
25        let ser = std::marker::PhantomData::<()>;
26        let bytes = ser.serialize::<DownwardBytes>().unwrap();
27        assert!(bytes.is_empty());
28        let _ = std::marker::PhantomData::<()>::deserialize(&bytes[..]).unwrap();
29    }
30}