cidr-map: impl Serialize for CidrMap

This commit is contained in:
Wez Furlong
2025-03-23 07:48:31 -07:00
parent 6c49d51ee7
commit 71c858457f
+18 -1
View File
@@ -15,7 +15,8 @@ use mlua::{FromLua, Lua, MetaMethod, UserDataMethods};
#[cfg(feature = "lua")]
use mod_memoize::CacheValue;
use serde::de::{MapAccess, Visitor};
use serde::{Deserialize, Deserializer};
use serde::ser::SerializeMap;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use std::fmt::Debug;
use std::net::IpAddr;
use std::str::FromStr;
@@ -100,6 +101,22 @@ where
}
}
impl<V> Serialize for CidrMap<V>
where
V: Clone + PartialEq + Serialize,
{
fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where
S: Serializer,
{
let mut map = serializer.serialize_map(None)?;
for (k, v) in self.iter() {
map.serialize_entry(k, v)?;
}
map.end()
}
}
/// Nodes of a CidrMap can be either an InnerNode (with two children)
/// or a leaf node.
#[derive(Debug, Clone, PartialEq)]