about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-02-04 13:41:42 +0000
committerbors <bors@rust-lang.org>2016-02-04 13:41:42 +0000
commite64ca8cd59c859e8ae4a8063c3f3146a05be01d1 (patch)
tree06d3037f1fc264122900ecf51ee5deeaa937eb1c /src/libstd
parent7b9d6d3bc8730aa565dbb5e285027443696aef0c (diff)
parent7ea0abfb3557da792d3d743473463e26cf3aeebf (diff)
downloadrust-e64ca8cd59c859e8ae4a8063c3f3146a05be01d1.tar.gz
rust-e64ca8cd59c859e8ae4a8063c3f3146a05be01d1.zip
Auto merge of #31161 - sfackler:slice-to-socket-addrs, r=alexcrichton
This is useful when you have an API that takes a `T: ToSocketAddrs` and needs to turn that into an owned value which will be passed to another API taking `T: ToSocketAddrs` at a later time, for example: https://github.com/sfackler/rust-hyper-socks/blob/master/src/lib.rs#L15
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/net/addr.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libstd/net/addr.rs b/src/libstd/net/addr.rs
index 9382793b8be..c592bef4980 100644
--- a/src/libstd/net/addr.rs
+++ b/src/libstd/net/addr.rs
@@ -21,6 +21,8 @@ use option;
 use sys::net::netc as c;
 use sys_common::{FromInner, AsInner, IntoInner};
 use vec;
+use iter;
+use slice;
 
 /// Representation of a socket address for networking applications.
 ///
@@ -457,6 +459,15 @@ impl ToSocketAddrs for str {
     }
 }
 
+#[stable(feature = "slice_to_socket_addrs", since = "1.8.0")]
+impl<'a> ToSocketAddrs for &'a [SocketAddr] {
+    type Iter = iter::Cloned<slice::Iter<'a, SocketAddr>>;
+
+    fn to_socket_addrs(&self) -> io::Result<Self::Iter> {
+        Ok(self.iter().cloned())
+    }
+}
+
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<'a, T: ToSocketAddrs + ?Sized> ToSocketAddrs for &'a T {
     type Iter = T::Iter;