std: Stabilize FromStr implementations in std::net
The IP and socket address types all had `FromStr` implemented but the implementations were not marked stable, nor was the error type returned ready to be properly stabilized. This commit marks the implementations of `FromStr` as stable and also renamed the `ParseError` structure to `AddrParseError`. The error is now also an opaque structure that cannot be constructed outside the standard library. cc #22949 [breaking-change]
This commit is contained in:
@@ -296,35 +296,40 @@ impl<'a> Parser<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl FromStr for Ipv4Addr {
|
||||
type Err = ParseError;
|
||||
fn from_str(s: &str) -> Result<Ipv4Addr, ParseError> {
|
||||
type Err = AddrParseError;
|
||||
fn from_str(s: &str) -> Result<Ipv4Addr, AddrParseError> {
|
||||
match Parser::new(s).read_till_eof(|p| p.read_ipv4_addr()) {
|
||||
Some(s) => Ok(s),
|
||||
None => Err(ParseError)
|
||||
None => Err(AddrParseError(()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl FromStr for Ipv6Addr {
|
||||
type Err = ParseError;
|
||||
fn from_str(s: &str) -> Result<Ipv6Addr, ParseError> {
|
||||
type Err = AddrParseError;
|
||||
fn from_str(s: &str) -> Result<Ipv6Addr, AddrParseError> {
|
||||
match Parser::new(s).read_till_eof(|p| p.read_ipv6_addr()) {
|
||||
Some(s) => Ok(s),
|
||||
None => Err(ParseError)
|
||||
None => Err(AddrParseError(()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl FromStr for SocketAddr {
|
||||
type Err = ParseError;
|
||||
fn from_str(s: &str) -> Result<SocketAddr, ParseError> {
|
||||
type Err = AddrParseError;
|
||||
fn from_str(s: &str) -> Result<SocketAddr, AddrParseError> {
|
||||
match Parser::new(s).read_till_eof(|p| p.read_socket_addr()) {
|
||||
Some(s) => Ok(s),
|
||||
None => Err(ParseError),
|
||||
None => Err(AddrParseError(())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Copy)]
|
||||
pub struct ParseError;
|
||||
/// An error returned when parsing an IP address or a socket address.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub struct AddrParseError(());
|
||||
|
||||
Reference in New Issue
Block a user