mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-17 01:08:53 +00:00
ipv6: rewrite core ipv6 methods to operate on u128s (#187)
* errors: adds `From<AddrParseError>` for `IpNetworkError` * ipv4: adds safety comment to `new_unchecked` and debug assertions to verify compliance * ipv6: rewrite core ipv6 methods to operate on `u128`s
This commit is contained in:

committed by
GitHub

parent
068959e2c4
commit
70d1f74e29
16
src/error.rs
16
src/error.rs
@ -1,4 +1,4 @@
|
||||
use std::{error::Error, fmt};
|
||||
use std::{error::Error, fmt, net::AddrParseError};
|
||||
|
||||
use crate::error::IpNetworkError::*;
|
||||
|
||||
@ -9,7 +9,7 @@ pub enum IpNetworkError {
|
||||
InvalidAddr(String),
|
||||
InvalidPrefix,
|
||||
InvalidCidrFormat(String),
|
||||
NetworkSizeError(NetworkSizeError)
|
||||
NetworkSizeError(NetworkSizeError),
|
||||
}
|
||||
|
||||
impl fmt::Display for IpNetworkError {
|
||||
@ -18,7 +18,7 @@ impl fmt::Display for IpNetworkError {
|
||||
InvalidAddr(ref s) => write!(f, "invalid address: {s}"),
|
||||
InvalidPrefix => write!(f, "invalid prefix"),
|
||||
InvalidCidrFormat(ref s) => write!(f, "invalid cidr format: {s}"),
|
||||
NetworkSizeError(ref e) => write!(f, "network size error: {e}")
|
||||
NetworkSizeError(ref e) => write!(f, "network size error: {e}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -29,16 +29,22 @@ impl Error for IpNetworkError {
|
||||
InvalidAddr(_) => "address is invalid",
|
||||
InvalidPrefix => "prefix is invalid",
|
||||
InvalidCidrFormat(_) => "cidr is invalid",
|
||||
NetworkSizeError(_) => "network size error"
|
||||
NetworkSizeError(_) => "network size error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<AddrParseError> for IpNetworkError {
|
||||
fn from(e: AddrParseError) -> Self {
|
||||
InvalidAddr(e.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
/// Cannot convert an IPv6 network size to a u32 as it is a 128-bit value.
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
#[non_exhaustive]
|
||||
pub enum NetworkSizeError {
|
||||
NetworkIsTooLarge
|
||||
NetworkIsTooLarge,
|
||||
}
|
||||
|
||||
impl fmt::Display for NetworkSizeError {
|
||||
|
Reference in New Issue
Block a user