@@ -57,7 +57,8 @@ pub enum SocketAddr {
5757/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
5858///
5959/// The size of a `SocketAddrV4` struct may vary depending on the target operating
60- /// system.
60+ /// system. Do not assume that this type has the same memory layout as the underlying
61+ /// system representation.
6162///
6263/// [IETF RFC 793]: https://tools.ietf.org/html/rfc793
6364/// [`IPv4` address]: Ipv4Addr
@@ -76,6 +77,8 @@ pub enum SocketAddr {
7677#[ derive( Copy ) ]
7778#[ stable( feature = "rust1" , since = "1.0.0" ) ]
7879pub struct SocketAddrV4 {
80+ // Do not assume that this struct is implemented as the underlying system representation.
81+ // The memory layout is not part of the stable interface that std exposes.
7982 inner : c:: sockaddr_in ,
8083}
8184
@@ -88,7 +91,8 @@ pub struct SocketAddrV4 {
8891/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
8992///
9093/// The size of a `SocketAddrV6` struct may vary depending on the target operating
91- /// system.
94+ /// system. Do not assume that this type has the same memory layout as the underlying
95+ /// system representation.
9296///
9397/// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
9498/// [`IPv6` address]: Ipv6Addr
@@ -107,6 +111,8 @@ pub struct SocketAddrV4 {
107111#[ derive( Copy ) ]
108112#[ stable( feature = "rust1" , since = "1.0.0" ) ]
109113pub struct SocketAddrV6 {
114+ // Do not assume that this struct is implemented as the underlying system representation.
115+ // The memory layout is not part of the stable interface that std exposes.
110116 inner : c:: sockaddr_in6 ,
111117}
112118
0 commit comments