mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-16 16:58:50 +00:00
Make IpNetwork::mask
const (#207)
* Make `Ipv4Network::mask` const * Make `Ipv6Network::mask` const * Make `IpNetwork::mask` const
This commit is contained in:

committed by
GitHub

parent
c2812a91a8
commit
9ae719637d
@ -180,13 +180,13 @@ impl Ipv4Network {
|
|||||||
/// let net: Ipv4Network = "127.0.0.0/16".parse().unwrap();
|
/// let net: Ipv4Network = "127.0.0.0/16".parse().unwrap();
|
||||||
/// assert_eq!(net.mask(), Ipv4Addr::new(255, 255, 0, 0));
|
/// 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);
|
debug_assert!(self.prefix <= 32);
|
||||||
if self.prefix == 0 {
|
if self.prefix == 0 {
|
||||||
return Ipv4Addr::new(0, 0, 0, 0);
|
return Ipv4Addr::new(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
let mask = u32::MAX << (IPV4_BITS - self.prefix);
|
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`.
|
/// Returns the address of the network denoted by this `Ipv4Network`.
|
||||||
|
@ -200,14 +200,14 @@ impl Ipv6Network {
|
|||||||
/// let net: Ipv6Network = "ff01::0/32".parse().unwrap();
|
/// let net: Ipv6Network = "ff01::0/32".parse().unwrap();
|
||||||
/// assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0));
|
/// 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);
|
debug_assert!(self.prefix <= IPV6_BITS);
|
||||||
|
|
||||||
if self.prefix == 0 {
|
if self.prefix == 0 {
|
||||||
return Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0);
|
return Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
let mask = u128::MAX << (IPV6_BITS - self.prefix);
|
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`.
|
/// Returns the address of the network denoted by this `Ipv6Network`.
|
||||||
|
@ -226,7 +226,7 @@ impl IpNetwork {
|
|||||||
/// let v6_net: IpNetwork = "ff01::0/32".parse().unwrap();
|
/// let v6_net: IpNetwork = "ff01::0/32".parse().unwrap();
|
||||||
/// assert_eq!(v6_net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0));
|
/// 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 {
|
match *self {
|
||||||
IpNetwork::V4(ref a) => IpAddr::V4(a.mask()),
|
IpNetwork::V4(ref a) => IpAddr::V4(a.mask()),
|
||||||
IpNetwork::V6(ref a) => IpAddr::V6(a.mask()),
|
IpNetwork::V6(ref a) => IpAddr::V6(a.mask()),
|
||||||
|
Reference in New Issue
Block a user