@@ -10,17 +10,33 @@ use io_lifetimes::{BorrowedFd, OwnedFd};
1010use 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]
2121fn 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