mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-14 08:16:59 +00:00
Merge pull request #122 from achanda/clippy-lints
Address all changes clippy pointed out
This commit is contained in:
@ -36,17 +36,17 @@ pub fn cidr_parts(cidr: &str) -> Result<(&str, Option<&str>), IpNetworkError> {
|
||||
let (ip, prefix) = cidr.split_at(sep);
|
||||
// Error if cidr has multiple slashes
|
||||
if prefix[1..].find('/').is_some() {
|
||||
return Err(IpNetworkError::InvalidCidrFormat(format!(
|
||||
Err(IpNetworkError::InvalidCidrFormat(format!(
|
||||
"CIDR must contain a single '/': {}",
|
||||
cidr
|
||||
)));
|
||||
)))
|
||||
} else {
|
||||
// Handle the case when cidr has exactly one slash
|
||||
return Ok((ip, Some(&prefix[1..])));
|
||||
Ok((ip, Some(&prefix[1..])))
|
||||
}
|
||||
} else {
|
||||
// Handle the case when cidr does not have a slash
|
||||
return Ok((cidr, None));
|
||||
Ok((cidr, None))
|
||||
}
|
||||
}
|
||||
|
||||
|
18
src/ipv4.rs
18
src/ipv4.rs
@ -61,7 +61,7 @@ impl Ipv4Network {
|
||||
/// Returns an iterator over `Ipv4Network`. Each call to `next` will return the next
|
||||
/// `Ipv4Addr` in the given network. `None` will be returned when there are no more
|
||||
/// addresses.
|
||||
pub fn iter(&self) -> Ipv4NetworkIterator {
|
||||
pub fn iter(self) -> Ipv4NetworkIterator {
|
||||
let start = u32::from(self.network());
|
||||
let end = start + (self.size() - 1);
|
||||
Ipv4NetworkIterator {
|
||||
@ -70,11 +70,11 @@ impl Ipv4Network {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ip(&self) -> Ipv4Addr {
|
||||
pub fn ip(self) -> Ipv4Addr {
|
||||
self.addr
|
||||
}
|
||||
|
||||
pub fn prefix(&self) -> u8 {
|
||||
pub fn prefix(self) -> u8 {
|
||||
self.prefix
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ 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 fn mask(self) -> Ipv4Addr {
|
||||
let prefix = self.prefix;
|
||||
let mask = !(0xffff_ffff as u64 >> prefix) as u32;
|
||||
Ipv4Addr::from(mask)
|
||||
@ -127,7 +127,7 @@ 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 {
|
||||
pub fn network(self) -> Ipv4Addr {
|
||||
let mask = u32::from(self.mask());
|
||||
let ip = u32::from(self.addr) & mask;
|
||||
Ipv4Addr::from(ip)
|
||||
@ -145,7 +145,7 @@ impl Ipv4Network {
|
||||
/// let net: Ipv4Network = "10.9.0.32/16".parse().unwrap();
|
||||
/// assert_eq!(net.broadcast(), Ipv4Addr::new(10, 9, 255, 255));
|
||||
/// ```
|
||||
pub fn broadcast(&self) -> Ipv4Addr {
|
||||
pub fn broadcast(self) -> Ipv4Addr {
|
||||
let mask = u32::from(self.mask());
|
||||
let broadcast = u32::from(self.addr) | !mask;
|
||||
Ipv4Addr::from(broadcast)
|
||||
@ -163,7 +163,7 @@ impl Ipv4Network {
|
||||
/// assert!(net.contains(Ipv4Addr::new(127, 0, 0, 70)));
|
||||
/// assert!(!net.contains(Ipv4Addr::new(127, 0, 1, 70)));
|
||||
/// ```
|
||||
pub fn contains(&self, ip: Ipv4Addr) -> bool {
|
||||
pub fn contains(self, ip: Ipv4Addr) -> bool {
|
||||
let mask = !(0xffff_ffff as u64 >> self.prefix) as u32;
|
||||
let net = u32::from(self.addr) & mask;
|
||||
(u32::from(ip) & mask) == net
|
||||
@ -183,7 +183,7 @@ impl Ipv4Network {
|
||||
/// let tinynet: Ipv4Network = "0.0.0.0/32".parse().unwrap();
|
||||
/// assert_eq!(tinynet.size(), 1);
|
||||
/// ```
|
||||
pub fn size(&self) -> u32 {
|
||||
pub fn size(self) -> u32 {
|
||||
let host_bits = u32::from(IPV4_BITS - self.prefix);
|
||||
(2 as u32).pow(host_bits)
|
||||
}
|
||||
@ -205,7 +205,7 @@ impl Ipv4Network {
|
||||
/// let net2: Ipv4Network = "10.0.0.0/16".parse().unwrap();
|
||||
/// assert_eq!(net2.nth(256).unwrap(), Ipv4Addr::new(10, 0, 1, 0));
|
||||
/// ```
|
||||
pub fn nth(&self, n: u32) -> Option<Ipv4Addr> {
|
||||
pub fn nth(self, n: u32) -> Option<Ipv4Addr> {
|
||||
if n < self.size() {
|
||||
let net = u32::from(self.network());
|
||||
Some(Ipv4Addr::from(net + n))
|
||||
|
@ -72,7 +72,7 @@ impl Ipv6Network {
|
||||
|
||||
Ipv6NetworkIterator {
|
||||
next: Some(start),
|
||||
end: end,
|
||||
end,
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user