INNER CODE UNIT · Rust
parse_port
domcyrus/rustnet · crates/rustnet-host/src/lib.rs:478
fn parse_port(port_str: &str) -> Option<u16> {
if port_str == "*" {
return Some(0);
}
port_str.parse::<u16>().ok()
}
if let Some(port_str) = addr_str.strip_prefix("*:") {
let port = parse_port(port_str)?;
return Some(SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), port));
}
// Handle IPv6 with brackets: [::1]:8080. Std parsing also accepts scope
// ids like [fe80::1%1]:22, which Ipv6Addr alone would reject.
if addr_str.starts_with('[') {
return addr_str.parse().ok();
}