summaryrefslogtreecommitdiffstats
path: root/vendor/io-lifetimes/tests/niche-optimizations.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/io-lifetimes/tests/niche-optimizations.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--vendor/io-lifetimes/tests/niche-optimizations.rs71
1 files changed, 71 insertions, 0 deletions
diff --git a/vendor/io-lifetimes/tests/niche-optimizations.rs b/vendor/io-lifetimes/tests/niche-optimizations.rs
new file mode 100644
index 000000000..89316d559
--- /dev/null
+++ b/vendor/io-lifetimes/tests/niche-optimizations.rs
@@ -0,0 +1,71 @@
+#![cfg_attr(not(rustc_attrs), allow(unused_imports))]
+#![cfg_attr(target_os = "wasi", feature(wasi_ext))]
+#![cfg_attr(io_lifetimes_use_std, feature(io_safety))]
+
+use std::mem::size_of;
+
+#[cfg(any(unix, target_os = "wasi"))]
+use io_lifetimes::{BorrowedFd, OwnedFd};
+#[cfg(windows)]
+use io_lifetimes::{BorrowedSocket, OwnedSocket};
+
+#[cfg(unix)]
+use std::os::unix::io::{FromRawFd, IntoRawFd, RawFd};
+#[cfg(target_os = "wasi")]
+use std::os::wasi::io::{FromRawSocket, IntoRawSocket, RawFd};
+#[cfg(windows)]
+use std::os::windows::io::{FromRawSocket, IntoRawSocket, RawSocket};
+
+#[cfg(all(rustc_attrs, any(unix, target_os = "wasi")))]
+#[test]
+fn test_niche_optimizations() {
+ assert_eq!(size_of::<Option<OwnedFd>>(), size_of::<RawFd>());
+ assert_eq!(size_of::<Option<BorrowedFd<'static>>>(), size_of::<RawFd>());
+ unsafe {
+ assert_eq!(OwnedFd::from_raw_fd(RawFd::MIN).into_raw_fd(), RawFd::MIN);
+ assert_eq!(OwnedFd::from_raw_fd(RawFd::MAX).into_raw_fd(), RawFd::MAX);
+ assert_eq!(
+ Some(OwnedFd::from_raw_fd(RawFd::MIN))
+ .unwrap()
+ .into_raw_fd(),
+ RawFd::MIN
+ );
+ assert_eq!(
+ Some(OwnedFd::from_raw_fd(RawFd::MAX))
+ .unwrap()
+ .into_raw_fd(),
+ RawFd::MAX
+ );
+ }
+}
+
+#[cfg(all(rustc_attrs, windows))]
+#[test]
+fn test_niche_optimizations_socket() {
+ assert_eq!(size_of::<Option<OwnedSocket>>(), size_of::<RawSocket>());
+ assert_eq!(
+ size_of::<Option<BorrowedSocket<'static>>>(),
+ size_of::<RawSocket>(),
+ );
+ unsafe {
+ #[cfg(target_pointer_width = "32")]
+ let (min, max) = (i32::MIN as u32, i32::MAX as u32);
+ #[cfg(target_pointer_width = "64")]
+ let (min, max) = (i64::MIN as u64, i64::MAX as u64);
+
+ assert_eq!(OwnedSocket::from_raw_socket(min).into_raw_socket(), min);
+ assert_eq!(OwnedSocket::from_raw_socket(max).into_raw_socket(), max);
+ assert_eq!(
+ Some(OwnedSocket::from_raw_socket(min))
+ .unwrap()
+ .into_raw_socket(),
+ min
+ );
+ assert_eq!(
+ Some(OwnedSocket::from_raw_socket(max))
+ .unwrap()
+ .into_raw_socket(),
+ max
+ );
+ }
+}