Skip to content

Commit 71c8584

Browse files
committed
cidr-map: impl Serialize for CidrMap
1 parent 6c49d51 commit 71c8584

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

crates/cidr-map/src/map.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use mlua::{FromLua, Lua, MetaMethod, UserDataMethods};
1515
#[cfg(feature = "lua")]
1616
use mod_memoize::CacheValue;
1717
use serde::de::{MapAccess, Visitor};
18-
use serde::{Deserialize, Deserializer};
18+
use serde::ser::SerializeMap;
19+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1920
use std::fmt::Debug;
2021
use std::net::IpAddr;
2122
use std::str::FromStr;
@@ -100,6 +101,22 @@ where
100101
}
101102
}
102103

104+
impl<V> Serialize for CidrMap<V>
105+
where
106+
V: Clone + PartialEq + Serialize,
107+
{
108+
fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
109+
where
110+
S: Serializer,
111+
{
112+
let mut map = serializer.serialize_map(None)?;
113+
for (k, v) in self.iter() {
114+
map.serialize_entry(k, v)?;
115+
}
116+
map.end()
117+
}
118+
}
119+
103120
/// Nodes of a CidrMap can be either an InnerNode (with two children)
104121
/// or a leaf node.
105122
#[derive(Debug, Clone, PartialEq)]

0 commit comments

Comments
 (0)