Skip to main content

blaze_pk/
serialize.rs

1//! This module contains the serde Serialize implementations for the
2//! structures created by Pocket Relay
3
4use crate::types::{Blob, TdfMap, VarIntList};
5use serde::ser::SerializeMap;
6use serde::Serialize;
7
8impl<K, V> Serialize for TdfMap<K, V>
9where
10    K: Serialize,
11    V: Serialize,
12{
13    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
14    where
15        S: serde::Serializer,
16    {
17        let mut map = serializer.serialize_map(Some(self.len()))?;
18        for (k, v) in self.iter() {
19            map.serialize_entry(k, v)?;
20        }
21        map.end()
22    }
23}
24
25impl<T> Serialize for VarIntList<T>
26where
27    T: Serialize,
28{
29    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
30    where
31        S: serde::Serializer,
32    {
33        self.0.serialize(serializer)
34    }
35}
36
37impl Serialize for Blob {
38    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
39    where
40        S: serde::Serializer,
41    {
42        self.0.serialize(serializer)
43    }
44}