impl FromStr for IpAddr

This commit is contained in:
Murarth
2015-03-26 13:31:37 -07:00
parent 1501f33e76
commit 1c43e53c8f

View File

@@ -16,7 +16,7 @@
use prelude::v1::*;
use str::FromStr;
use net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
use net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
struct Parser<'a> {
// parsing as ASCII, so can use byte array
@@ -24,11 +24,6 @@ struct Parser<'a> {
pos: usize,
}
enum IpAddr {
V4(Ipv4Addr),
V6(Ipv6Addr),
}
impl<'a> Parser<'a> {
fn new(s: &'a str) -> Parser<'a> {
Parser {
@@ -296,6 +291,17 @@ impl<'a> Parser<'a> {
}
}
#[unstable(feature = "ip_addr", reason = "recent addition")]
impl FromStr for IpAddr {
type Err = AddrParseError;
fn from_str(s: &str) -> Result<IpAddr, AddrParseError> {
match Parser::new(s).read_till_eof(|p| p.read_ip_addr()) {
Some(s) => Ok(s),
None => Err(AddrParseError(()))
}
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl FromStr for Ipv4Addr {
type Err = AddrParseError;