@@ -10,17 +10,33 @@ use io_lifetimes::{BorrowedFd, OwnedFd};
10
10
use io_lifetimes:: { BorrowedSocket , OwnedSocket } ;
11
11
12
12
#[ cfg( unix) ]
13
- use std:: os:: unix:: io:: RawFd ;
13
+ use std:: os:: unix:: io:: { FromRawFd , IntoRawFd , RawFd } ;
14
14
#[ cfg( target_os = "wasi" ) ]
15
- use std:: os:: wasi:: io:: RawFd ;
15
+ use std:: os:: wasi:: io:: { FromRawSocket , IntoRawSocket , RawFd } ;
16
16
#[ cfg( windows) ]
17
- use std:: os:: windows:: io:: RawSocket ;
17
+ use std:: os:: windows:: io:: { FromRawSocket , IntoRawSocket , RawSocket } ;
18
18
19
19
#[ cfg( all( rustc_attrs, any( unix, target_os = "wasi" ) ) ) ]
20
20
#[ test]
21
21
fn test_niche_optimizations ( ) {
22
22
assert_eq ! ( size_of:: <Option <OwnedFd >>( ) , size_of:: <RawFd >( ) ) ;
23
23
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
+ }
24
40
}
25
41
26
42
#[ cfg( all( rustc_attrs, windows) ) ]
@@ -31,4 +47,25 @@ fn test_niche_optimizations_socket() {
31
47
size_of:: <Option <BorrowedSocket <' static >>>( ) ,
32
48
size_of:: <RawSocket >( ) ,
33
49
) ;
50
+ unsafe {
51
+ #[ cfg( target_pointer_width = "32" ) ]
52
+ let ( min, max) = ( i32:: MIN as u32 , i32:: MAX as u32 ) ;
53
+ #[ cfg( target_pointer_width = "64" ) ]
54
+ let ( min, max) = ( i64:: MIN as u64 , i64:: MAX as u64 ) ;
55
+
56
+ assert_eq ! ( OwnedSocket :: from_raw_socket( min) . into_raw_socket( ) , min) ;
57
+ assert_eq ! ( OwnedSocket :: from_raw_socket( max) . into_raw_socket( ) , max) ;
58
+ assert_eq ! (
59
+ Some ( OwnedSocket :: from_raw_socket( min) )
60
+ . unwrap( )
61
+ . into_raw_socket( ) ,
62
+ min
63
+ ) ;
64
+ assert_eq ! (
65
+ Some ( OwnedSocket :: from_raw_socket( max) )
66
+ . unwrap( )
67
+ . into_raw_socket( ) ,
68
+ max
69
+ ) ;
70
+ }
34
71
}
0 commit comments