Skip to content

Commit 17c7a58

Browse files
committed
Add more niche-optimization tests.
This ports in the new tests added in rust-lang/rust#96947.
1 parent 93735f8 commit 17c7a58

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

tests/niche-optimizations.rs

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,33 @@ use io_lifetimes::{BorrowedFd, OwnedFd};
1010
use io_lifetimes::{BorrowedSocket, OwnedSocket};
1111

1212
#[cfg(unix)]
13-
use std::os::unix::io::RawFd;
13+
use std::os::unix::io::{FromRawFd, IntoRawFd, RawFd};
1414
#[cfg(target_os = "wasi")]
15-
use std::os::wasi::io::RawFd;
15+
use std::os::wasi::io::{FromRawSocket, IntoRawSocket, RawFd};
1616
#[cfg(windows)]
17-
use std::os::windows::io::RawSocket;
17+
use std::os::windows::io::{FromRawSocket, IntoRawSocket, RawSocket};
1818

1919
#[cfg(all(rustc_attrs, any(unix, target_os = "wasi")))]
2020
#[test]
2121
fn test_niche_optimizations() {
2222
assert_eq!(size_of::<Option<OwnedFd>>(), size_of::<RawFd>());
2323
assert_eq!(size_of::<Option<BorrowedFd<'static>>>(), size_of::<RawFd>());
24+
unsafe {
25+
assert_eq!(OwnedFd::from_raw_fd(RawFd::MIN).into_raw_fd(), RawFd::MIN);
26+
assert_eq!(OwnedFd::from_raw_fd(RawFd::MAX).into_raw_fd(), RawFd::MAX);
27+
assert_eq!(
28+
Some(OwnedFd::from_raw_fd(RawFd::MIN))
29+
.unwrap()
30+
.into_raw_fd(),
31+
RawFd::MIN
32+
);
33+
assert_eq!(
34+
Some(OwnedFd::from_raw_fd(RawFd::MAX))
35+
.unwrap()
36+
.into_raw_fd(),
37+
RawFd::MAX
38+
);
39+
}
2440
}
2541

2642
#[cfg(all(rustc_attrs, windows))]
@@ -31,4 +47,26 @@ fn test_niche_optimizations_socket() {
3147
size_of::<Option<BorrowedSocket<'static>>>(),
3248
size_of::<RawSocket>(),
3349
);
50+
unsafe {
51+
assert_eq!(
52+
OwnedSocket::from_raw_socket(RawSocket::MIN).into_raw_socket(),
53+
RawSocket::MIN
54+
);
55+
assert_eq!(
56+
OwnedSocket::from_raw_socket(RawSocket::MAX).into_raw_socket(),
57+
RawSocket::MAX
58+
);
59+
assert_eq!(
60+
Some(OwnedSocket::from_raw_socket(RawSocket::MIN))
61+
.unwrap()
62+
.into_raw_socket(),
63+
RawSocket::MIN
64+
);
65+
assert_eq!(
66+
Some(OwnedSocket::from_raw_socket(RawSocket::MAX))
67+
.unwrap()
68+
.into_raw_socket(),
69+
RawSocket::MAX
70+
);
71+
}
3472
}

0 commit comments

Comments
 (0)