ipnetwork/
error.rs

1use std::{error::Error, fmt, net::AddrParseError};
2
3use crate::error::IpNetworkError::*;
4
5/// Represents a bunch of errors that can occur while working with a `IpNetwork`
6#[derive(#[automatically_derived]
impl ::core::fmt::Debug for IpNetworkError {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        match self {
            IpNetworkError::InvalidAddr(__self_0) =>
                ::core::fmt::Formatter::debug_tuple_field1_finish(f,
                    "InvalidAddr", &__self_0),
            IpNetworkError::InvalidPrefix =>
                ::core::fmt::Formatter::write_str(f, "InvalidPrefix"),
            IpNetworkError::InvalidCidrFormat(__self_0) =>
                ::core::fmt::Formatter::debug_tuple_field1_finish(f,
                    "InvalidCidrFormat", &__self_0),
            IpNetworkError::NetworkSizeError(__self_0) =>
                ::core::fmt::Formatter::debug_tuple_field1_finish(f,
                    "NetworkSizeError", &__self_0),
        }
    }
}Debug, #[automatically_derived]
impl ::core::clone::Clone for IpNetworkError {
    #[inline]
    fn clone(&self) -> IpNetworkError {
        match self {
            IpNetworkError::InvalidAddr(__self_0) =>
                IpNetworkError::InvalidAddr(::core::clone::Clone::clone(__self_0)),
            IpNetworkError::InvalidPrefix => IpNetworkError::InvalidPrefix,
            IpNetworkError::InvalidCidrFormat(__self_0) =>
                IpNetworkError::InvalidCidrFormat(::core::clone::Clone::clone(__self_0)),
            IpNetworkError::NetworkSizeError(__self_0) =>
                IpNetworkError::NetworkSizeError(::core::clone::Clone::clone(__self_0)),
        }
    }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for IpNetworkError {
    #[inline]
    fn eq(&self, other: &IpNetworkError) -> bool {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        __self_discr == __arg1_discr &&
            match (self, other) {
                (IpNetworkError::InvalidAddr(__self_0),
                    IpNetworkError::InvalidAddr(__arg1_0)) =>
                    __self_0 == __arg1_0,
                (IpNetworkError::InvalidCidrFormat(__self_0),
                    IpNetworkError::InvalidCidrFormat(__arg1_0)) =>
                    __self_0 == __arg1_0,
                (IpNetworkError::NetworkSizeError(__self_0),
                    IpNetworkError::NetworkSizeError(__arg1_0)) =>
                    __self_0 == __arg1_0,
                _ => true,
            }
    }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for IpNetworkError {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_receiver_is_total_eq(&self) -> () {
        let _: ::core::cmp::AssertParamIsEq<String>;
        let _: ::core::cmp::AssertParamIsEq<NetworkSizeError>;
    }
}Eq)]
7#[non_exhaustive]
8pub enum IpNetworkError {
9    InvalidAddr(String),
10    InvalidPrefix,
11    InvalidCidrFormat(String),
12    NetworkSizeError(NetworkSizeError),
13}
14
15impl fmt::Display for IpNetworkError {
16    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17        match *self {
18            InvalidAddr(ref s) => f.write_fmt(format_args!("invalid address: {0}", s))write!(f, "invalid address: {s}"),
19            InvalidPrefix => f.write_fmt(format_args!("invalid prefix"))write!(f, "invalid prefix"),
20            InvalidCidrFormat(ref s) => f.write_fmt(format_args!("invalid cidr format: {0}", s))write!(f, "invalid cidr format: {s}"),
21            NetworkSizeError(ref e) => f.write_fmt(format_args!("network size error: {0}", e))write!(f, "network size error: {e}"),
22        }
23    }
24}
25
26impl Error for IpNetworkError {
27    fn description(&self) -> &str {
28        match *self {
29            InvalidAddr(_) => "address is invalid",
30            InvalidPrefix => "prefix is invalid",
31            InvalidCidrFormat(_) => "cidr is invalid",
32            NetworkSizeError(_) => "network size error",
33        }
34    }
35}
36
37impl From<AddrParseError> for IpNetworkError {
38    fn from(e: AddrParseError) -> Self {
39        InvalidAddr(e.to_string())
40    }
41}
42
43/// Cannot convert an IPv6 network size to a u32 as it is a 128-bit value.
44#[derive(#[automatically_derived]
impl ::core::marker::Copy for NetworkSizeError { }Copy, #[automatically_derived]
impl ::core::clone::Clone for NetworkSizeError {
    #[inline]
    fn clone(&self) -> NetworkSizeError { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for NetworkSizeError {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f, "NetworkIsTooLarge")
    }
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for NetworkSizeError {
    #[inline]
    fn eq(&self, other: &NetworkSizeError) -> bool { true }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for NetworkSizeError {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_receiver_is_total_eq(&self) -> () {}
}Eq)]
45#[non_exhaustive]
46pub enum NetworkSizeError {
47    NetworkIsTooLarge,
48}
49
50impl fmt::Display for NetworkSizeError {
51    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
52        f.write_str("Network is too large to fit into an unsigned 32-bit integer!")
53    }
54}
55
56impl Error for NetworkSizeError {}