From 6621fd7bd92ff75a71cfd137c2c533d93876f301 Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Tue, 7 Jan 2025 21:43:09 +0100 Subject: [PATCH 1/3] Make `Ipv4Network::mask` const --- src/ipv4.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ipv4.rs b/src/ipv4.rs index 58d834c..0ca3468 100644 --- a/src/ipv4.rs +++ b/src/ipv4.rs @@ -180,13 +180,13 @@ impl Ipv4Network { /// let net: Ipv4Network = "127.0.0.0/16".parse().unwrap(); /// assert_eq!(net.mask(), Ipv4Addr::new(255, 255, 0, 0)); /// ``` - pub fn mask(&self) -> Ipv4Addr { + pub const fn mask(&self) -> Ipv4Addr { debug_assert!(self.prefix <= 32); if self.prefix == 0 { return Ipv4Addr::new(0, 0, 0, 0); } let mask = u32::MAX << (IPV4_BITS - self.prefix); - Ipv4Addr::from(mask) + Ipv4Addr::from_bits(mask) } /// Returns the address of the network denoted by this `Ipv4Network`. From fe028fcd41789af12bb4999e8a060b5a10fcd94f Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Tue, 7 Jan 2025 21:44:50 +0100 Subject: [PATCH 2/3] Make `Ipv6Network::mask` const --- src/ipv6.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ipv6.rs b/src/ipv6.rs index 7e6206c..1d87adc 100644 --- a/src/ipv6.rs +++ b/src/ipv6.rs @@ -200,14 +200,14 @@ impl Ipv6Network { /// let net: Ipv6Network = "ff01::0/32".parse().unwrap(); /// assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0)); /// ``` - pub fn mask(&self) -> Ipv6Addr { + pub const fn mask(&self) -> Ipv6Addr { debug_assert!(self.prefix <= IPV6_BITS); if self.prefix == 0 { return Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0); } let mask = u128::MAX << (IPV6_BITS - self.prefix); - Ipv6Addr::from(mask) + Ipv6Addr::from_bits(mask) } /// Returns the address of the network denoted by this `Ipv6Network`. From b3cee64b35fd08d29e561f3382fe4652f95109a5 Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Tue, 7 Jan 2025 21:45:40 +0100 Subject: [PATCH 3/3] Make `IpNetwork::mask` const --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 4931c0a..b64a478 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -226,7 +226,7 @@ impl IpNetwork { /// let v6_net: IpNetwork = "ff01::0/32".parse().unwrap(); /// assert_eq!(v6_net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0)); /// ``` - pub fn mask(&self) -> IpAddr { + pub const fn mask(&self) -> IpAddr { match *self { IpNetwork::V4(ref a) => IpAddr::V4(a.mask()), IpNetwork::V6(ref a) => IpAddr::V6(a.mask()),