about summary refs log tree commit diff
path: root/library/std/src/net/addr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/std/src/net/addr.rs')
-rw-r--r--library/std/src/net/addr.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/library/std/src/net/addr.rs b/library/std/src/net/addr.rs
index d724f7e7843..bfda46a802b 100644
--- a/library/std/src/net/addr.rs
+++ b/library/std/src/net/addr.rs
@@ -12,7 +12,7 @@ use crate::option;
 use crate::slice;
 use crate::sys::net::netc as c;
 use crate::sys_common::net::LookupHost;
-use crate::sys_common::{AsInner, FromInner, IntoInner};
+use crate::sys_common::{FromInner, IntoInner};
 use crate::vec;
 
 /// An internet socket address, either IPv4 or IPv6.
@@ -528,17 +528,14 @@ impl SocketAddrV6 {
 
 impl FromInner<c::sockaddr_in> for SocketAddrV4 {
     fn from_inner(addr: c::sockaddr_in) -> SocketAddrV4 {
-        SocketAddrV4 {
-            ip: unsafe { *(&addr.sin_addr as *const c::in_addr as *const Ipv4Addr) },
-            port: ntohs(addr.sin_port),
-        }
+        SocketAddrV4 { ip: Ipv4Addr::from_inner(addr.sin_addr), port: ntohs(addr.sin_port) }
     }
 }
 
 impl FromInner<c::sockaddr_in6> for SocketAddrV6 {
     fn from_inner(addr: c::sockaddr_in6) -> SocketAddrV6 {
         SocketAddrV6 {
-            ip: unsafe { *(&addr.sin6_addr as *const c::in6_addr as *const Ipv6Addr) },
+            ip: Ipv6Addr::from_inner(addr.sin6_addr),
             port: ntohs(addr.sin6_port),
             flowinfo: addr.sin6_flowinfo,
             scope_id: addr.sin6_scope_id,
@@ -562,7 +559,7 @@ impl IntoInner<c::sockaddr_in6> for SocketAddrV6 {
         c::sockaddr_in6 {
             sin6_family: c::AF_INET6 as c::sa_family_t,
             sin6_port: htons(self.port),
-            sin6_addr: *self.ip.as_inner(),
+            sin6_addr: self.ip.into_inner(),
             sin6_flowinfo: self.flowinfo,
             sin6_scope_id: self.scope_id,
             ..unsafe { mem::zeroed() }