@@ -13,6 +13,7 @@ pub mod net {
1313 use crate :: fmt;
1414 use crate :: io:: { self , IoSlice , IoSliceMut } ;
1515 use crate :: net:: { Ipv4Addr , Ipv6Addr , Shutdown , SocketAddr } ;
16+ use crate :: os:: unix:: io:: { AsFd , AsRawFd , BorrowedFd , FromRawFd , IntoRawFd , RawFd } ;
1617 use crate :: sys:: fd:: FileDesc ;
1718 use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
1819 use crate :: time:: Duration ;
@@ -123,21 +124,45 @@ pub mod net {
123124 }
124125 }
125126
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
129130 }
130131 }
131132
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 )
135136 }
136137 }
137138
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) )
141166 }
142167 }
143168
0 commit comments