inet 0.1.1

This library aids in internet processing.
Documentation
use crate::authority::Authority;
use crate::socket::SocketAddress;

/// Represents either an authority or a socket address.
pub enum Endpoint {

    /// An Authority
    Name(Authority),

    /// A Socket Address
    Address(SocketAddress),
}

impl ToString for Endpoint {

    /// ```
    /// use inet::socket::SocketAddress;
    /// use inet::ip::{IPAddress, IPv4Address, IPv6Address};
    /// use inet::endpoint::Endpoint;
    /// use inet::domain::Domain;
    /// use inet::authority::Authority;
    /// use std::convert::TryFrom;
    ///
    /// let domain: Domain = Domain::try_from("localhost".as_bytes()).ok().unwrap();
    /// let authority: Endpoint = Endpoint::Name(Authority{ name: domain, port: 80 });
    /// assert_eq!(authority.to_string(), "localhost:80");
    ///
    /// let ip: IPAddress = IPAddress::V4(IPv4Address::LOCALHOST);
    /// let socket: Endpoint = Endpoint::Address(SocketAddress{ ip, port: 80 });
    /// assert_eq!(socket.to_string(), "127.0.0.1:80");
    /// ```
    fn to_string(&self) -> String {
        match self {
            Endpoint::Name(authority) => authority.to_string(),
            Endpoint::Address(socket) => socket.to_string(),
        }
    }
}