From 71c858457f0274ba7c136ffb8a8a4bc0c87f2fb5 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 23 Mar 2025 07:48:31 -0700 Subject: [PATCH] cidr-map: impl Serialize for CidrMap --- crates/cidr-map/src/map.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/crates/cidr-map/src/map.rs b/crates/cidr-map/src/map.rs index 715d01f3..b9629f12 100644 --- a/crates/cidr-map/src/map.rs +++ b/crates/cidr-map/src/map.rs @@ -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 Serialize for CidrMap +where + V: Clone + PartialEq + Serialize, +{ + fn serialize(&self, serializer: S) -> Result<::Ok, ::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)]