diff --git a/src/common.rs b/src/common.rs index a3c2ea5..7953543 100644 --- a/src/common.rs +++ b/src/common.rs @@ -17,7 +17,7 @@ pub fn cidr_parts<'a>(cidr: &'a str) -> Result<(&'a str, &'a str), IpNetworkErro } pub fn parse_prefix(prefix: &str, max: u8) -> Result { - let mask = try!(prefix.parse::().map_err(|_| IpNetworkError::InvalidPrefix)); + let mask = prefix.parse::().map_err(|_| IpNetworkError::InvalidPrefix)?; if mask > max { Err(IpNetworkError::InvalidPrefix) } else { @@ -32,9 +32,9 @@ pub fn parse_addr(addr: &str) -> Result { if i >= 4 { return Err(IpNetworkError::InvalidAddr(format!("More than 4 bytes: {}", addr))); } - bytes[i] = try!(byte.map_err(|_| { + bytes[i] = byte.map_err(|_| { IpNetworkError::InvalidAddr(format!("All bytes not 0-255: {}", addr)) - })); + })?; } Ok(Ipv4Addr::new(bytes[0], bytes[1], bytes[2], bytes[3])) } diff --git a/src/ipv4.rs b/src/ipv4.rs index aaed223..4bbd77c 100644 --- a/src/ipv4.rs +++ b/src/ipv4.rs @@ -175,9 +175,9 @@ impl Ipv4Network { if i >= 4 { return Err(IpNetworkError::InvalidAddr(format!("More than 4 bytes: {}", addr))); } - bytes[i] = try!(byte.map_err(|_| { + bytes[i] = byte.map_err(|_| { IpNetworkError::InvalidAddr(format!("All bytes not 0-255: {}", addr)) - })); + })?; } Ok(Ipv4Addr::new(bytes[0], bytes[1], bytes[2], bytes[3])) } @@ -206,9 +206,9 @@ impl fmt::Display for Ipv4Network { impl FromStr for Ipv4Network { type Err = IpNetworkError; fn from_str(s: &str) -> Result { - let (addr_str, prefix_str) = try!(cidr_parts(s)); - let addr = try!(parse_addr(addr_str)); - let prefix = try!(parse_prefix(prefix_str, IPV4_BITS)); + let (addr_str, prefix_str) = cidr_parts(s)?; + let addr = parse_addr(addr_str)?; + let prefix = parse_prefix(prefix_str, IPV4_BITS)?; Ipv4Network::new(addr, prefix) } } diff --git a/src/ipv6.rs b/src/ipv6.rs index 9785b27..a6fb2ae 100644 --- a/src/ipv6.rs +++ b/src/ipv6.rs @@ -87,10 +87,10 @@ impl Ipv6Network { impl FromStr for Ipv6Network { type Err = IpNetworkError; fn from_str(s: &str) -> Result { - let (addr_str, prefix_str) = try!(cidr_parts(s)); - let addr = try!(Ipv6Addr::from_str(addr_str) - .map_err(|_| IpNetworkError::InvalidAddr(format!("{}", addr_str)))); - let prefix = try!(parse_prefix(prefix_str, IPV6_BITS)); + let (addr_str, prefix_str) = cidr_parts(s)?; + let addr = Ipv6Addr::from_str(addr_str) + .map_err(|_| IpNetworkError::InvalidAddr(format!("{}", addr_str)))?; + let prefix = parse_prefix(prefix_str, IPV6_BITS)?; Ipv6Network::new(addr, prefix) } } diff --git a/src/lib.rs b/src/lib.rs index c223379..ecbce1e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,8 +24,8 @@ pub enum IpNetwork { impl IpNetwork { pub fn new(ip: IpAddr, prefix: u8) -> Result { match ip { - IpAddr::V4(a) => Ok(IpNetwork::V4(try!(Ipv4Network::new(a, prefix)))), - IpAddr::V6(a) => Ok(IpNetwork::V6(try!(Ipv6Network::new(a, prefix)))), + IpAddr::V4(a) => Ok(IpNetwork::V4(Ipv4Network::new(a, prefix)?)), + IpAddr::V6(a) => Ok(IpNetwork::V6(Ipv6Network::new(a, prefix)?)), } }