1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::{future::Future, io::Result, net::SocketAddr};
pub trait ToSocketAddrs {
type Iter: Iterator<Item = SocketAddr>;
type Future: Future<Output = Result<Self::Iter>>;
fn to_socket_addrs(&self) -> Self::Future;
}
impl<T: std::net::ToSocketAddrs> ToSocketAddrs for T {
type Iter = <T as std::net::ToSocketAddrs>::Iter;
type Future = std::future::Ready<Result<Self::Iter>>;
fn to_socket_addrs(&self) -> Self::Future {
std::future::ready(self.to_socket_addrs())
}
}