@@ -117,7 +117,7 @@ impl Socket {
117117 } ;
118118
119119 if socket != c:: INVALID_SOCKET {
120- unsafe { Ok ( Self :: from_raw_socket ( socket) ) }
120+ unsafe { Ok ( Self :: from_raw ( socket) ) }
121121 } else {
122122 let error = unsafe { c:: WSAGetLastError ( ) } ;
123123
@@ -133,7 +133,7 @@ impl Socket {
133133 }
134134
135135 unsafe {
136- let socket = Self :: from_raw_socket ( socket) ;
136+ let socket = Self :: from_raw ( socket) ;
137137 socket. 0 . set_no_inherit ( ) ?;
138138 Ok ( socket)
139139 }
@@ -144,7 +144,7 @@ impl Socket {
144144 self . set_nonblocking ( true ) ?;
145145 let result = {
146146 let ( addr, len) = addr. into_inner ( ) ;
147- let result = unsafe { c:: connect ( self . as_raw_socket ( ) , addr. as_ptr ( ) , len) } ;
147+ let result = unsafe { c:: connect ( self . as_raw ( ) , addr. as_ptr ( ) , len) } ;
148148 cvt ( result) . map ( drop)
149149 } ;
150150 self . set_nonblocking ( false ) ?;
@@ -170,7 +170,7 @@ impl Socket {
170170 let fds = {
171171 let mut fds = unsafe { mem:: zeroed :: < c:: fd_set > ( ) } ;
172172 fds. fd_count = 1 ;
173- fds. fd_array [ 0 ] = self . as_raw_socket ( ) ;
173+ fds. fd_array [ 0 ] = self . as_raw ( ) ;
174174 fds
175175 } ;
176176
@@ -202,11 +202,11 @@ impl Socket {
202202 }
203203
204204 pub fn accept ( & self , storage : * mut c:: SOCKADDR , len : * mut c_int ) -> io:: Result < Socket > {
205- let socket = unsafe { c:: accept ( self . as_raw_socket ( ) , storage, len) } ;
205+ let socket = unsafe { c:: accept ( self . as_raw ( ) , storage, len) } ;
206206
207207 match socket {
208208 c:: INVALID_SOCKET => Err ( last_error ( ) ) ,
209- _ => unsafe { Ok ( Self :: from_raw_socket ( socket) ) } ,
209+ _ => unsafe { Ok ( Self :: from_raw ( socket) ) } ,
210210 }
211211 }
212212
@@ -218,9 +218,8 @@ impl Socket {
218218 // On unix when a socket is shut down all further reads return 0, so we
219219 // do the same on windows to map a shut down socket to returning EOF.
220220 let length = cmp:: min ( buf. capacity ( ) , i32:: MAX as usize ) as i32 ;
221- let result = unsafe {
222- c:: recv ( self . as_raw_socket ( ) , buf. as_mut ( ) . as_mut_ptr ( ) as * mut _ , length, flags)
223- } ;
221+ let result =
222+ unsafe { c:: recv ( self . as_raw ( ) , buf. as_mut ( ) . as_mut_ptr ( ) as * mut _ , length, flags) } ;
224223
225224 match result {
226225 c:: SOCKET_ERROR => {
@@ -257,7 +256,7 @@ impl Socket {
257256 let mut flags = 0 ;
258257 let result = unsafe {
259258 c:: WSARecv (
260- self . as_raw_socket ( ) ,
259+ self . as_raw ( ) ,
261260 bufs. as_mut_ptr ( ) as * mut c:: WSABUF ,
262261 length,
263262 & mut nread,
@@ -305,7 +304,7 @@ impl Socket {
305304 // do the same on windows to map a shut down socket to returning EOF.
306305 let result = unsafe {
307306 c:: recvfrom (
308- self . as_raw_socket ( ) ,
307+ self . as_raw ( ) ,
309308 buf. as_mut_ptr ( ) as * mut _ ,
310309 length,
311310 flags,
@@ -341,7 +340,7 @@ impl Socket {
341340 let mut nwritten = 0 ;
342341 let result = unsafe {
343342 c:: WSASend (
344- self . as_raw_socket ( ) ,
343+ self . as_raw ( ) ,
345344 bufs. as_ptr ( ) as * const c:: WSABUF as * mut _ ,
346345 length,
347346 & mut nwritten,
@@ -392,14 +391,14 @@ impl Socket {
392391 Shutdown :: Read => c:: SD_RECEIVE ,
393392 Shutdown :: Both => c:: SD_BOTH ,
394393 } ;
395- let result = unsafe { c:: shutdown ( self . as_raw_socket ( ) , how) } ;
394+ let result = unsafe { c:: shutdown ( self . as_raw ( ) , how) } ;
396395 cvt ( result) . map ( drop)
397396 }
398397
399398 pub fn set_nonblocking ( & self , nonblocking : bool ) -> io:: Result < ( ) > {
400399 let mut nonblocking = nonblocking as c_ulong ;
401400 let result =
402- unsafe { c:: ioctlsocket ( self . as_raw_socket ( ) , c:: FIONBIO as c_int , & mut nonblocking) } ;
401+ unsafe { c:: ioctlsocket ( self . as_raw ( ) , c:: FIONBIO as c_int , & mut nonblocking) } ;
403402 cvt ( result) . map ( drop)
404403 }
405404
@@ -433,8 +432,15 @@ impl Socket {
433432 }
434433
435434 // This is used by sys_common code to abstract over Windows and Unix.
436- pub fn as_raw ( & self ) -> RawSocket {
437- self . as_inner ( ) . as_raw_socket ( )
435+ pub fn as_raw ( & self ) -> c:: SOCKET {
436+ debug_assert_eq ! ( mem:: size_of:: <c:: SOCKET >( ) , mem:: size_of:: <RawSocket >( ) ) ;
437+ debug_assert_eq ! ( mem:: align_of:: <c:: SOCKET >( ) , mem:: align_of:: <RawSocket >( ) ) ;
438+ self . as_inner ( ) . as_raw_socket ( ) as c:: SOCKET
439+ }
440+ pub unsafe fn from_raw ( raw : c:: SOCKET ) -> Self {
441+ debug_assert_eq ! ( mem:: size_of:: <c:: SOCKET >( ) , mem:: size_of:: <RawSocket >( ) ) ;
442+ debug_assert_eq ! ( mem:: align_of:: <c:: SOCKET >( ) , mem:: align_of:: <RawSocket >( ) ) ;
443+ Self :: from_raw_socket ( raw as RawSocket )
438444 }
439445}
440446
0 commit comments