tcp_ip 0.1.10

User-space TCP/IP stack
Documentation
use std::io;
use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6};

pub trait ToSocketAddr {
    fn to_addr(&self) -> io::Result<SocketAddr>;
}
impl ToSocketAddr for &SocketAddr {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok(**self)
    }
}
impl ToSocketAddr for SocketAddr {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok(*self)
    }
}
impl ToSocketAddr for &SocketAddrV4 {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok((**self).into())
    }
}
impl ToSocketAddr for SocketAddrV4 {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok((*self).into())
    }
}
impl ToSocketAddr for &SocketAddrV6 {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok((**self).into())
    }
}
impl ToSocketAddr for SocketAddrV6 {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        Ok((*self).into())
    }
}
impl ToSocketAddr for &str {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        self.parse()
            .map_err(|e| io::Error::new(io::ErrorKind::InvalidInput, format!("{e}")))
    }
}
impl ToSocketAddr for &String {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        self.as_str().to_addr()
    }
}
impl ToSocketAddr for String {
    fn to_addr(&self) -> io::Result<SocketAddr> {
        self.as_str().to_addr()
    }
}