iptools 0.3.0

Python iptools port for Rust
Documentation
use core::fmt;
use std::fmt::Display;

pub type Result<T> = std::result::Result<T, Error>;

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
    V4CIDR(),
    V6CIDR(),
    V4Subnet(),
    V4IP(),
    V6IP(),
    V4IPConvert(),
    V6IPConvert(),
    Hex2IP(),
    UnknownVersion(),
}

impl std::error::Error for Error {
    fn description(&self) -> &str {
        use self::Error::*;

        match *self {
            V4CIDR() => "Couldn't validate CIDR",
            V6CIDR() => "Couldn't validate CIDR",
            V4Subnet() => "Couldn't validate subnet",
            V4IP() => "Couldn't validate IPV4 address",
            V6IP() => "Couldn't validate IPV6 address",
            V4IPConvert() => "Couldn't convert IPV4 address",
            V6IPConvert() => "Couldn't convert IPV6 address",
            Hex2IP() => "Couldn't convert HEX to IP address",
            UnknownVersion() => "Couldn't detect IP version",
        }
    }
}

impl Display for Error {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::result::Result<(), fmt::Error> {
        use self::Error::*;

        match *self {
            V4CIDR() => write!(f, "Couldn't validate CIDR"),
            V6CIDR() => write!(f, "Couldn't validate CIDR"),
            V4Subnet() => write!(f, "Couldn't validate subnet"),
            V4IP() => write!(f, "Couldn't validate IPV4 address"),
            V6IP() => write!(f, "Couldn't validate IPV6 address"),
            V4IPConvert() => write!(f, "Couldn't convert IPV4 address"),
            V6IPConvert() => write!(f, "Couldn't convert IPV6 address"),
            Hex2IP() => write!(f, "Couldn't convert HEX to IP address"),
            UnknownVersion() => write!(f, "Couldn't detect IP version"),
        }
    }
}