diff options
| author | 2025-02-01 00:20:54 -0600 | |
|---|---|---|
| committer | 2025-02-01 00:20:54 -0600 | |
| commit | 6a1bb0980facadcc22cbae27f57782050e7924a1 (patch) | |
| tree | dafdd715f7fc3f42323bd20666bd653a73a30b68 /src/auth/types | |
| parent | do clippy stuff and change line endings (diff) | |
random changes
Diffstat (limited to 'src/auth/types')
| -rw-r--r-- | src/auth/types/property_map.rs | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/auth/types/property_map.rs b/src/auth/types/property_map.rs index 964b06f..ddfc9ce 100644 --- a/src/auth/types/property_map.rs +++ b/src/auth/types/property_map.rs @@ -2,22 +2,33 @@ use std::fmt::Formatter; use multimap::MultiMap; use serde::de::{SeqAccess, Visitor}; use serde::{Deserializer, Serializer}; -use serde::ser::SerializeSeq; use crate::auth::Property; pub type PropertyMap = MultiMap<String, Property>; +pub mod legacy { + use serde::Serializer; + use super::PropertyMap; + + pub fn serialize<S>(value: &PropertyMap, serializer: S) -> Result<S::Ok, S::Error> + where S: Serializer + { + serializer.collect_map(value.iter_all() + .filter_map(|(k, v)| { + if v.is_empty() { + None + } else { + Some((k, v.iter().map(|p| &p.value).collect::<Vec<_>>())) + } + })) + } +} + pub fn serialize<S>(value: &PropertyMap, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { - let mut seq = serializer.serialize_seq(Some(value.keys().len()))?; - - for (_, prop) in value.flat_iter() { - seq.serialize_element(prop)?; - } - - seq.end() + serializer.collect_seq(value.flat_iter().map(|(_, v)| v)) } pub fn deserialize<'de, D>(deserializer: D) -> Result<PropertyMap, D::Error> |
