In versions of Rust before 1.0, I was able to use from_str()
to convert a String
to SocketAddr
, but that function no longer exists. How can I do this in Rust 1.0.?
let server_details = reader.read_line().ok().expect("Something went wrong").as_slice().trim(); let server: SocketAddr = from_str(server_details); let mut s = BufferedStream::new((TcpStream::connect(server).unwrap()));
from_str
was renamed to parse
and is now a method you can call on strings:
use std::net::SocketAddr; fn main() { let server_details = "127.0.0.1:80"; let server: SocketAddr = server_details .parse() .expect("Unable to parse socket address"); println!("{:?}", server); }
If you'd like to be able to resolve DNS entries to IPv{4,6} addresses, you may want to use ToSocketAddrs
:
use std::net::{TcpStream, ToSocketAddrs}; fn main() { let server_details = "stackoverflow.com:80"; let server: Vec<_> = server_details .to_socket_addrs() .expect("Unable to resolve domain") .collect(); println!("{:?}", server); // Even easier, if you want to connect right away: TcpStream::connect(server_details).expect("Unable to connect to server"); }
to_socket_addrs
returns an iterator as a single DNS entry can expand to multiple IP addresses! Note that this code won't work in the playground as network access is disabled there; you'll need to try it out locally.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With