@@ -13,6 +13,7 @@ pub mod net {
13
13
use crate :: fmt;
14
14
use crate :: io:: { self , IoSlice , IoSliceMut } ;
15
15
use crate :: net:: { Ipv4Addr , Ipv6Addr , Shutdown , SocketAddr } ;
16
+ use crate :: os:: unix:: io:: { AsFd , AsRawFd , BorrowedFd , FromRawFd , IntoRawFd , RawFd } ;
16
17
use crate :: sys:: fd:: FileDesc ;
17
18
use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
18
19
use crate :: time:: Duration ;
@@ -123,21 +124,45 @@ pub mod net {
123
124
}
124
125
}
125
126
126
- impl AsInner < libc :: c_int > for Socket {
127
- fn as_inner ( & self ) -> & libc :: c_int {
128
- self . 0 . as_inner ( )
127
+ impl AsInner < FileDesc > for Socket {
128
+ fn as_inner ( & self ) -> & FileDesc {
129
+ & self . 0
129
130
}
130
131
}
131
132
132
- impl FromInner < libc :: c_int > for Socket {
133
- fn from_inner ( fd : libc :: c_int ) -> Socket {
134
- Socket ( FileDesc :: new ( fd ) )
133
+ impl FromInner < FileDesc > for Socket {
134
+ fn from_inner ( file_desc : FileDesc ) -> Socket {
135
+ Socket ( file_desc )
135
136
}
136
137
}
137
138
138
- impl IntoInner < libc:: c_int > for Socket {
139
- fn into_inner ( self ) -> libc:: c_int {
140
- self . 0 . into_raw ( )
139
+ impl IntoInner < FileDesc > for Socket {
140
+ fn into_inner ( self ) -> FileDesc {
141
+ self . 0
142
+ }
143
+ }
144
+
145
+ impl AsFd for Socket {
146
+ fn as_fd ( & self ) -> BorrowedFd < ' _ > {
147
+ self . 0 . as_fd ( )
148
+ }
149
+ }
150
+
151
+ impl AsRawFd for Socket {
152
+ fn as_raw_fd ( & self ) -> RawFd {
153
+ self . 0 . as_raw_fd ( )
154
+ }
155
+ }
156
+
157
+ impl IntoRawFd for Socket {
158
+ fn into_raw_fd ( self ) -> RawFd {
159
+ self . 0 . into_raw_fd ( )
160
+ }
161
+ }
162
+
163
+ impl FromRawFd for Socket {
164
+ unsafe fn from_raw_fd ( raw_fd : RawFd ) -> Self {
165
+ Self ( FromRawFd :: from_raw_fd ( raw_fd) )
141
166
}
142
167
}
143
168
0 commit comments