Метод ToSocketAddrs::to_socket_addrs
Метод to_socket_addrs принадлежит трейту ToSocketAddrs и преобразует значение, реализующее этот трейт, в итератор адресов сокета SocketAddr. Метод не принимает параметров и возвращает результат типа io::Result<Self::Iter>. Трейт ToSocketAddrs реализован для строк, кортежей вида (&str, u16), а также для SocketAddr, SocketAddrV4 и SocketAddrV6, что позволяет удобно передавать адреса в функции сетевого взаимодействия.
Синтаксис
use std::net::ToSocketAddrs;
let iter = value.to_socket_addrs()?;
Пример
Давайте преобразуем строку "127.0.0.1:8080" в итератор адресов сокета и выведем первый адрес:
use std::net::ToSocketAddrs;
fn main()
{
let res = "127.0.0.1:8080".to_socket_addrs();
match res
{
Ok(mut iter) =>
{
if let Some(addr) = iter.next()
{
println!("{}", addr);
}
}
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
127.0.0.1:8080
Пример
Давайте преобразуем кортеж ("localhost", 3000) в итератор адресов сокета и выведем все полученные адреса:
use std::net::ToSocketAddrs;
fn main()
{
let res = ("localhost", 3000).to_socket_addrs();
match res
{
Ok(iter) =>
{
for addr in iter
{
println!("{}", addr);
}
}
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
127.0.0.1:3000
[::1]:3000
Пример
Давайте преобразуем строку "example.com:80" в итератор адресов сокета и выведем первый адрес:
use std::net::ToSocketAddrs;
fn main()
{
let res = "example.com:80".to_socket_addrs();
match res
{
Ok(mut iter) =>
{
if let Some(addr) = iter.next()
{
println!("{}", addr);
}
}
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
93.184.216.34:80
Смотрите также
-
трейт
ToSocketAddrs,
который предоставляет метод to_socket_addrs -
структура
SocketAddr,
которая представляет адрес сокета -
структура
SocketAddrV4,
которая представляет IPv4 адрес сокета -
структура
SocketAddrV6,
которая представляет IPv6 адрес сокета