diff --git a/appmgr/src/tor.rs b/appmgr/src/tor.rs index 03f8ffb8a..af4799028 100644 --- a/appmgr/src/tor.rs +++ b/appmgr/src/tor.rs @@ -33,9 +33,18 @@ impl<'de> serde::de::Deserialize<'de> for PortMapping { pub struct PortMappingIF { pub internal: u16, pub tor: u16, - #[serde(default)] + #[serde(default, deserialize_with = "deserialize_some")] pub lan: Option>, } + + fn deserialize_some<'de, T, D>(deserializer: D) -> Result, D::Error> + where + T: serde::de::Deserialize<'de>, + D: serde::de::Deserializer<'de>, + { + serde::de::Deserialize::deserialize(deserializer).map(Some) + } + let input_format: PortMappingIF = serde::de::Deserialize::deserialize(deserializer)?; Ok(PortMapping { internal: input_format.internal,