//! Vectorize maps with non-standard keys. use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::iter::FromIterator; /// Serialize into a [Vector][std::vec::Vec] from a [Map][std::collections::HashMap]. pub fn serialize<'a, T, K, V, S>(target: T, ser: S) -> Result where S: Serializer, T: IntoIterator, K: Serialize + 'a, V: Serialize + 'a, { let container: Vec<_> = target.into_iter().collect(); Serialize::serialize(&container, ser) } /// Deserialize from a [Vector][std::vec::Vec] to a [Map][std::collections::HashMap]. pub fn deserialize<'de, T, K, V, D>(des: D) -> Result where D: Deserializer<'de>, T: FromIterator<(K, V)>, K: Deserialize<'de>, V: Deserialize<'de>, { let container: Vec<_> = Deserialize::deserialize(des)?; Ok(T::from_iter(container)) }