#[cfg(feature = "core")] use core::hash::Hash; use indexmap::IndexMap; use rkyv::Archive; #[cfg(feature = "std")] use std::hash::Hash; #[derive(rkyv::Serialize, rkyv::Deserialize, rkyv::Archive)] /// See [`IndexMap`] pub struct ArchivableIndexMap { entries: Vec<(K, V)>, } impl ArchivedArchivableIndexMap { pub fn iter(&self) -> core::slice::Iter<'_, (K::Archived, V::Archived)> { self.entries.iter() } } impl From> for ArchivableIndexMap { fn from(it: IndexMap) -> ArchivableIndexMap { let mut r = ArchivableIndexMap { entries: Vec::new(), }; for (k, v) in it.into_iter() { r.entries.push((k, v)); } r } } impl Into> for ArchivableIndexMap { fn into(self) -> IndexMap { let mut r = IndexMap::new(); for (k, v) in self.entries.into_iter() { r.insert(k, v); } r } }