From 876f882523fc12baee39e5e1960745860d4132fc Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Thu, 9 Jan 2025 00:37:32 +0100 Subject: [PATCH] Make `IpNetwork::network` const (#210) --- src/ipv4.rs | 8 ++++---- src/lib.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ipv4.rs b/src/ipv4.rs index 15b46d9..c5646e3 100644 --- a/src/ipv4.rs +++ b/src/ipv4.rs @@ -201,10 +201,10 @@ impl Ipv4Network { /// let net: Ipv4Network = "10.1.9.32/16".parse().unwrap(); /// assert_eq!(net.network(), Ipv4Addr::new(10, 1, 0, 0)); /// ``` - pub fn network(&self) -> Ipv4Addr { - let mask = u32::from(self.mask()); - let ip = u32::from(self.addr) & mask; - Ipv4Addr::from(ip) + pub const fn network(&self) -> Ipv4Addr { + let mask = self.mask().to_bits(); + let ip = self.addr.to_bits() & mask; + Ipv4Addr::from_bits(ip) } /// Returns the broadcasting address of this `Ipv4Network`. diff --git a/src/lib.rs b/src/lib.rs index 6bc6cb1..e8893e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -181,7 +181,7 @@ impl IpNetwork { /// let net: IpNetwork = "2001:db8::/96".parse().unwrap(); /// assert_eq!(net.network(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)); /// ``` - pub fn network(&self) -> IpAddr { + pub const fn network(&self) -> IpAddr { match *self { IpNetwork::V4(ref a) => IpAddr::V4(a.network()), IpNetwork::V6(ref a) => IpAddr::V6(a.network()),