1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use std::io; use std::net::{ ToSocketAddrs, SocketAddr }; pub trait ToSingleSocketAddr { fn to_single_socket_addr(&self) -> io::Result<SocketAddr>; } impl <T> ToSingleSocketAddr for T where T: ToSocketAddrs { fn to_single_socket_addr(&self) -> io::Result<SocketAddr> { self.to_socket_addrs().and_then(|mut iter| { iter.next().ok_or(io::Error::new(io::ErrorKind::Other, "There was no socket addr")) }) } }