From b01c0b8ad8b915bc4ac98fdd6456250bf81873b8 Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Wed, 8 Jan 2025 09:23:56 +0100 Subject: [PATCH] Make `IpNetwork::network` const --- 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 5906ef0..60b3c04 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 491e7c3..d0f1c90 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()),