Skip to content

Commit a21f5df

Browse files
Make IpNetwork::broadcast const (#211)
1 parent 876f882 commit a21f5df

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

src/ipv4.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,10 @@ impl Ipv4Network {
219219
/// let net: Ipv4Network = "10.9.0.32/16".parse().unwrap();
220220
/// assert_eq!(net.broadcast(), Ipv4Addr::new(10, 9, 255, 255));
221221
/// ```
222-
pub fn broadcast(&self) -> Ipv4Addr {
223-
let mask = u32::from(self.mask());
224-
let broadcast = u32::from(self.addr) | !mask;
225-
Ipv4Addr::from(broadcast)
222+
pub const fn broadcast(&self) -> Ipv4Addr {
223+
let mask = self.mask().to_bits();
224+
let broadcast = self.addr.to_bits() | !mask;
225+
Ipv4Addr::from_bits(broadcast)
226226
}
227227

228228
/// Checks if a given `Ipv4Addr` is in this `Ipv4Network`

src/ipv6.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,10 @@ impl Ipv6Network {
240240
/// let net: Ipv6Network = "2001:db8::/96".parse().unwrap();
241241
/// assert_eq!(net.broadcast(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0xffff, 0xffff));
242242
/// ```
243-
pub fn broadcast(&self) -> Ipv6Addr {
244-
let mask = u128::from(self.mask());
245-
let broadcast = u128::from(self.addr) | !mask;
246-
Ipv6Addr::from(broadcast)
243+
pub const fn broadcast(&self) -> Ipv6Addr {
244+
let mask = self.mask().to_bits();
245+
let broadcast = self.addr.to_bits() | !mask;
246+
Ipv6Addr::from_bits(broadcast)
247247
}
248248

249249
/// Checks if a given `Ipv6Addr` is in this `Ipv6Network`

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ impl IpNetwork {
200200
/// let net: Ipv4Network = "10.9.0.32/16".parse().unwrap();
201201
/// assert_eq!(net.broadcast(), Ipv4Addr::new(10, 9, 255, 255));
202202
/// ```
203-
pub fn broadcast(&self) -> IpAddr {
203+
pub const fn broadcast(&self) -> IpAddr {
204204
match *self {
205205
IpNetwork::V4(ref a) => IpAddr::V4(a.broadcast()),
206206
IpNetwork::V6(ref a) => IpAddr::V6(a.broadcast()),

0 commit comments

Comments
 (0)