1use std::{
2 collections::{BTreeMap, HashMap},
3 hash::Hash,
4};
5
6use serde::{Deserialize, Serialize};
7
8use crate::{Commonality, TotalBTreeMap, TotalHashMap};
9
10impl<K: Serialize, V: Serialize, C> Serialize for TotalHashMap<K, V, C> {
11 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12 where
13 S: serde::Serializer,
14 {
15 self.as_hash_map().serialize(serializer)
16 }
17}
18impl<'de, K: Deserialize<'de> + Eq + Hash, V: Deserialize<'de>, C: Commonality<V>> Deserialize<'de>
19 for TotalHashMap<K, V, C>
20{
21 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
22 where
23 D: serde::Deserializer<'de>,
24 {
25 let mut this = Self::default();
26 *this.as_hash_map_mut() = HashMap::deserialize(deserializer)?;
27 Ok(this)
28 }
29}
30
31impl<K: Serialize, V: Serialize, C> Serialize for TotalBTreeMap<K, V, C> {
32 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
33 where
34 S: serde::Serializer,
35 {
36 self.as_btree_map().serialize(serializer)
37 }
38}
39impl<'de, K: Deserialize<'de> + Ord, V: Deserialize<'de>, C: Commonality<V>> Deserialize<'de>
40 for TotalBTreeMap<K, V, C>
41{
42 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
43 where
44 D: serde::Deserializer<'de>,
45 {
46 let mut this = Self::default();
47 *this.as_btree_map_mut() = BTreeMap::deserialize(deserializer)?;
48 Ok(this)
49 }
50}