1use super::NetAddr;
2
3use serde::{Serialize, Serializer};
4
5#[cfg(feature = "serde")]
6impl Serialize for NetAddr {
7 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
8 serializer.serialize_str(&self.to_string())
9 }
10}
11
12#[cfg(test)]
13mod tests {
14 use super::NetAddr;
15 use serde_test::{assert_tokens, Token};
16
17 mod v4 {
18 use super::*;
19
20 #[test]
21 fn test_ser_cidr_localhost() {
22 let netaddr: NetAddr = "127.0.0.1/8".parse().unwrap();
23
24 assert_tokens(&netaddr, &[Token::Str("127.0.0.0/8")]);
25 }
26
27 #[test]
28 fn test_ser_non_cidr_localhost() {
29 let netaddr: NetAddr = "127.0.0.1/251.255.255.7".parse().unwrap();
30
31 assert_tokens(&netaddr, &[Token::Str("123.0.0.1/251.255.255.7")]);
32 }
33 }
34
35 mod v6 {
36 use super::*;
37
38 #[test]
39 fn test_ser_cidr_localhost() {
40 let netaddr: NetAddr = "ff02::1/60".parse().unwrap();
41
42 assert_tokens(&netaddr, &[Token::Str("ff02::/60")]);
43 }
44
45 #[test]
46 fn test_ser_non_cidr_localhost() {
47 let netaddr: NetAddr = "ff02:dead:beef::1/ff02:eeee:eeee::1".parse().unwrap();
48
49 assert_tokens(
50 &netaddr,
51 &[Token::Str("ff02:ceac:aeee::1/ff02:eeee:eeee::1")],
52 );
53 }
54 }
55}