Skip to content

Commit 571734f

Browse files
authored
Rollup merge of rust-lang#48932 - Phlosioneer:43601-document-opaque-size, r=KodrAus
Document when types have OS-dependent sizes As per issue rust-lang#43601, types that can change size depending on the target operating system should say so in their documentation. I used this template when adding doc comments: ``` The size of a(n) <name> struct may vary depending on the target operating system, and may change between Rust releases. ``` For enums, I used "instance" instead of "struct". I added documentation to these types: ``` - std::time::Instant (contains sys::time::Instant) - std::time::SystemTime (contains sys::time::SystemTime) - std::io::StdinRaw (contains sys::stdio::Stdin) - std::io::StdoutRaw (contains sys::stdio::Stdout) - std::io::Stderr (contains sys::stdio::Stderr) - std::net::addr::SocketAddrV4 (contains sys::net::netc::sockaddr_in) - std::net::addr::SocketAddrV6 (contains sys::net::netc::sockaddr_in6) - std::net::addr::SocketAddr (contains std::net::addr::SocketAddrV4 and SocketAddrV6) - std::net::ip::Ipv4Addr (contains sys::net::netc::in_addr) - std::net::ip::Ipv6Addr (contains sys::net::netc::in6_addr) - std::net::ip::IpAddr (contains std::net::ip::Ipv4Addr and Ipv6Addr) ``` I also found that these types varied in size; however, I don't think they need documentation, as it's already fairly obvious that they change based on different OS's: ``` - std::fs::DirBuilder (contains sys::fs::DirBuilder) - std::fs::FileType (contains sys::fs::FileType) - std::fs::Permissions (contains sys::fs::FilePermissions) - std::fs::OpenOptions (contains sys::fs::OpenOptions) - std::fs::DirEntry (contains sys::fs::DirEntry) - std::fs::ReadDir (contains sys::fs::ReadDir) - std::fs::Metadata (contains sys::fs::FileAttr) - std::fs::File (contains sys::fs::File) - std::process::Child (contains sys::process::Process) - std::process::ChildStdin (contains sys::process::AnonPipe) - std::process::ChildStdout (contains sys::process::AnonPipe) - std::process::ChildStderr (contains sys::process::AnonPipe) - std::process::Command (contains sys::process::Command) - std::process::Stdio (contains sys::process::Stdio) - std::process::ExitStatus (contains sys::process::ExitStatus) - std::process::Output (contains std::process::ExitStatus) - std::sys_common::condvar::Condvar (contains sys::condvar::Condvar) - std::sys_common::mutex::Mutex (contains sys::mutex::Mutex) - std::sys_common::net::LookupHost (contains sys::net::netc::addrinfo) - std::sys_common::net::TcpStream (contains sys::net::Socket) - std::sys_common::net::TcpListener (contains sys::net::Socket) - std::sys_common::net::UdpSocket (contains sys::net::Socket) - std::sys_common::remutex::ReentrantMutex (contains sys::mutex::ReentrantMutex) - std::sys_common::rwlock::RWLock (contains sys::rwlock::RWLock) - std::sys_common::thread_local::Key (contains sys::thread_local::Key) ``` Maybe we should just put a comment about the size of structs in the module-level docs for `fs`, `process`, and `sys_common`? If anyone can think of other types that can change size, comment below. I'm also open to changing the wording. closes rust-lang#43601.
2 parents 3d7a046 + efd0442 commit 571734f

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

src/libstd/net/addr.rs

+9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ use slice;
2828
/// as possibly some version-dependent additional information. See [`SocketAddrV4`]'s and
2929
/// [`SocketAddrV6`]'s respective documentation for more details.
3030
///
31+
/// The size of a `SocketAddr` instance may vary depending on the target operating
32+
/// system.
33+
///
3134
/// [IP address]: ../../std/net/enum.IpAddr.html
3235
/// [`SocketAddrV4`]: ../../std/net/struct.SocketAddrV4.html
3336
/// [`SocketAddrV6`]: ../../std/net/struct.SocketAddrV6.html
@@ -61,6 +64,9 @@ pub enum SocketAddr {
6164
///
6265
/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
6366
///
67+
/// The size of a `SocketAddrV4` struct may vary depending on the target operating
68+
/// system.
69+
///
6470
/// [IETF RFC 793]: https://tools.ietf.org/html/rfc793
6571
/// [IPv4 address]: ../../std/net/struct.Ipv4Addr.html
6672
/// [`SocketAddr`]: ../../std/net/enum.SocketAddr.html
@@ -88,6 +94,9 @@ pub struct SocketAddrV4 { inner: c::sockaddr_in }
8894
///
8995
/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
9096
///
97+
/// The size of a `SocketAddrV6` struct may vary depending on the target operating
98+
/// system.
99+
///
91100
/// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
92101
/// [IPv6 address]: ../../std/net/struct.Ipv6Addr.html
93102
/// [`SocketAddr`]: ../../std/net/enum.SocketAddr.html

src/libstd/net/ip.rs

+9
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ use sys_common::{AsInner, FromInner};
2626
/// This enum can contain either an [`Ipv4Addr`] or an [`Ipv6Addr`], see their
2727
/// respective documentation for more details.
2828
///
29+
/// The size of an `IpAddr` instance may vary depending on the target operating
30+
/// system.
31+
///
2932
/// [`Ipv4Addr`]: ../../std/net/struct.Ipv4Addr.html
3033
/// [`Ipv6Addr`]: ../../std/net/struct.Ipv6Addr.html
3134
///
@@ -61,6 +64,9 @@ pub enum IpAddr {
6164
///
6265
/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses.
6366
///
67+
/// The size of an `Ipv4Addr` struct may vary depending on the target operating
68+
/// system.
69+
///
6470
/// [IETF RFC 791]: https://tools.ietf.org/html/rfc791
6571
/// [`IpAddr`]: ../../std/net/enum.IpAddr.html
6672
///
@@ -93,6 +99,9 @@ pub struct Ipv4Addr {
9399
///
94100
/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses.
95101
///
102+
/// The size of an `Ipv6Addr` struct may vary depending on the target operating
103+
/// system.
104+
///
96105
/// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291
97106
/// [`IpAddr`]: ../../std/net/enum.IpAddr.html
98107
///

src/libstd/time.rs

+6
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ pub use core::time::Duration;
4949
/// allows measuring the duration between two instants (or comparing two
5050
/// instants).
5151
///
52+
/// The size of an `Instant` struct may vary depending on the target operating
53+
/// system.
54+
///
5255
/// Example:
5356
///
5457
/// ```no_run
@@ -88,6 +91,9 @@ pub struct Instant(time::Instant);
8891
/// fixed point in time, a `SystemTime` can be converted to a human-readable time,
8992
/// or perhaps some other string representation.
9093
///
94+
/// The size of a `SystemTime` struct may vary depending on the target operating
95+
/// system.
96+
///
9197
/// [`Instant`]: ../../std/time/struct.Instant.html
9298
/// [`Result`]: ../../std/result/enum.Result.html
9399
/// [`Duration`]: ../../std/time/struct.Duration.html

0 commit comments

Comments
 (0)