mirror of
https://github.com/openharmony/third_party_rust_ipnet.git
synced 2026-07-19 14:23:38 -04:00
Fixing Serialize impl for Ipv4Net and Ipv6Net per issue #10
This commit is contained in:
@@ -72,6 +72,7 @@ pub enum IpNet {
|
||||
/// let net: Ipv4Net = "10.1.1.0/24".parse().unwrap();
|
||||
/// assert_eq!(Ok(net.network()), "10.1.1.0".parse());
|
||||
/// ```
|
||||
//#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
||||
pub struct Ipv4Net {
|
||||
addr: Ipv4Addr,
|
||||
@@ -102,6 +103,7 @@ pub struct Ipv4Net {
|
||||
/// let net: Ipv6Net = "fd00::/32".parse().unwrap();
|
||||
/// assert_eq!(Ok(net.network()), "fd00::".parse());
|
||||
/// ```
|
||||
//#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
||||
pub struct Ipv6Net {
|
||||
addr: Ipv6Addr,
|
||||
|
||||
+18
-4
@@ -13,9 +13,16 @@ impl<'de> Deserialize<'de> for Ipv4Net {
|
||||
|
||||
impl Serialize for Ipv4Net {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where S: Serializer
|
||||
where S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&self.to_string())
|
||||
if serializer.is_human_readable() {
|
||||
serializer.serialize_str(&self.to_string())
|
||||
} else {
|
||||
let mut v: Vec<u8> = vec![];
|
||||
v.extend_from_slice(&self.octets());
|
||||
v.push(self.prefix_len());
|
||||
v.serialize(serializer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +40,14 @@ impl Serialize for Ipv6Net {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where S: Serializer
|
||||
{
|
||||
serializer.serialize_str(&self.to_string())
|
||||
if serializer.is_human_readable() {
|
||||
serializer.serialize_str(&self.to_string())
|
||||
} else {
|
||||
let mut v: Vec<u8> = vec![];
|
||||
v.extend_from_slice(&self.octets());
|
||||
v.push(self.prefix_len());
|
||||
v.serialize(serializer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,4 +85,4 @@ mod tests {
|
||||
let net: IpNet = net_str.parse().unwrap();
|
||||
assert_tokens(&net.readable(), &[Token::Str(net_str)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user