@@ -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,26 @@ fn test_niche_optimizations_socket() {
31
47
size_of:: <Option <BorrowedSocket <' static >>>( ) ,
32
48
size_of:: <RawSocket >( ) ,
33
49
) ;
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
+ }
34
72
}
0 commit comments