From 87dcbcada247560d9ce5df28dd76034182e5b492 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Sat, 28 Jan 2017 12:53:17 -0800 Subject: [PATCH] add From<[u8; n]> impls for IpAddr --- src/libstd/net/ip.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs index 7803cf728f2e9..cfd06dfcdd51b 100644 --- a/src/libstd/net/ip.rs +++ b/src/libstd/net/ip.rs @@ -656,6 +656,13 @@ impl From<[u8; 4]> for Ipv4Addr { } } +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u8; 4]> for IpAddr { + fn from(octets: [u8; 4]) -> IpAddr { + IpAddr::V4(Ipv4Addr::from(octets)) + } +} + impl Ipv6Addr { /// Creates a new IPv6 address from eight 16-bit segments. /// @@ -1166,6 +1173,21 @@ impl From<[u16; 8]> for Ipv6Addr { } } + +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u8; 16]> for IpAddr { + fn from(octets: [u8; 16]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(octets)) + } +} + +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u16; 8]> for IpAddr { + fn from(octets: [u16; 8]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(octets)) + } +} + // Tests for this module #[cfg(all(test, not(target_os = "emscripten")))] mod tests {