oca_bundle/state/
entries.rs

1use serde::{ser::SerializeMap, Deserialize, Serialize};
2use std::collections::HashMap;
3
4impl Serialize for EntriesElement {
5    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
6    where
7        S: serde::Serializer,
8    {
9        use std::collections::BTreeMap;
10
11        match self {
12            Self::Sai(sai) => serializer.serialize_str(sai),
13            Self::Object(entries) => {
14                let sorted_entries: BTreeMap<_, _> = entries.iter().collect();
15                let mut map = serializer.serialize_map(Some(entries.len()))?;
16                for (k, v) in sorted_entries {
17                    map.serialize_entry(k, v)?;
18                }
19                map.end()
20            }
21        }
22    }
23}
24
25#[derive(Deserialize, Debug, Clone)]
26#[serde(untagged)]
27pub enum EntriesElement {
28    Sai(String),
29    Object(HashMap<String, String>),
30}