impl FromStr for IpAddr
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user