summaryrefslogtreecommitdiffstats
path: root/third_party/rust/tokio/src/net/lookup_host.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/tokio/src/net/lookup_host.rs')
-rw-r--r--third_party/rust/tokio/src/net/lookup_host.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/third_party/rust/tokio/src/net/lookup_host.rs b/third_party/rust/tokio/src/net/lookup_host.rs
new file mode 100644
index 0000000000..28861849e4
--- /dev/null
+++ b/third_party/rust/tokio/src/net/lookup_host.rs
@@ -0,0 +1,38 @@
+cfg_net! {
+ use crate::net::addr::{self, ToSocketAddrs};
+
+ use std::io;
+ use std::net::SocketAddr;
+
+ /// Performs a DNS resolution.
+ ///
+ /// The returned iterator may not actually yield any values depending on the
+ /// outcome of any resolution performed.
+ ///
+ /// This API is not intended to cover all DNS use cases. Anything beyond the
+ /// basic use case should be done with a specialized library.
+ ///
+ /// # Examples
+ ///
+ /// To resolve a DNS entry:
+ ///
+ /// ```no_run
+ /// use tokio::net;
+ /// use std::io;
+ ///
+ /// #[tokio::main]
+ /// async fn main() -> io::Result<()> {
+ /// for addr in net::lookup_host("localhost:3000").await? {
+ /// println!("socket address is {}", addr);
+ /// }
+ ///
+ /// Ok(())
+ /// }
+ /// ```
+ pub async fn lookup_host<T>(host: T) -> io::Result<impl Iterator<Item = SocketAddr>>
+ where
+ T: ToSocketAddrs
+ {
+ addr::to_socket_addrs(host).await
+ }
+}