@@ -49,21 +49,12 @@ impl UnixStream {
4949 /// The Unix stream here will not have `connect` called on it, so it
5050 /// should already be connected via some other means (be it manually, or
5151 /// the standard library).
52- #[ cfg( unix) ]
53- #[ cfg_attr( docsrs, doc( cfg( unix) ) ) ]
5452 pub fn from_std ( stream : net:: UnixStream ) -> UnixStream {
5553 UnixStream {
5654 inner : IoSource :: new ( stream) ,
5755 }
5856 }
5957
60- #[ cfg( windows) ]
61- pub ( crate ) fn from_std ( stream : net:: UnixStream ) -> UnixStream {
62- UnixStream {
63- inner : IoSource :: new ( stream) ,
64- }
65- }
66-
6758 /// Creates an unnamed pair of connected sockets.
6859 ///
6960 /// Returns two `UnixStream`s which are connected to each other.
@@ -178,34 +169,6 @@ impl UnixStream {
178169 /// # let _ = std::fs::remove_file(&file_path);
179170 /// let server = UnixListener::bind(&file_path).unwrap();
180171 ///
181- /// let handle = std::thread::spawn(move || {
182- /// if let Ok((stream2, _)) = server.accept() {
183- /// // Wait until the stream is readable...
184- ///
185- /// // Read from the stream using a direct WinSock call, of course the
186- /// // `io::Read` implementation would be easier to use.
187- /// let mut buf = [0; 512];
188- /// let n = stream2.try_io(|| {
189- /// let res = unsafe {
190- /// WinSock::recv(
191- /// stream2.as_raw_socket().try_into().unwrap(),
192- /// &mut buf as *mut _ as *mut _,
193- /// buf.len() as c_int,
194- /// 0
195- /// )
196- /// };
197- /// if res != WinSock::SOCKET_ERROR {
198- /// Ok(res as usize)
199- /// } else {
200- /// // If EAGAIN or EWOULDBLOCK is set by WinSock::recv, the closure
201- /// // should return `WouldBlock` error.
202- /// Err(io::Error::last_os_error())
203- /// }
204- /// }).unwrap();
205- /// eprintln!("read {} bytes", n);
206- /// }
207- /// });
208- ///
209172 /// let stream1 = UnixStream::connect(&file_path).unwrap();
210173 ///
211174 /// // Wait until the stream is writable...
@@ -234,6 +197,33 @@ impl UnixStream {
234197 /// })?;
235198 /// eprintln!("write {} bytes", n);
236199 ///
200+ /// let handle = std::thread::spawn(move || {
201+ /// if let Ok((stream2, _)) = server.accept() {
202+ /// // Wait until the stream is readable...
203+ ///
204+ /// // Read from the stream using a direct WinSock call, of course the
205+ /// // `io::Read` implementation would be easier to use.
206+ /// let mut buf = [0; 512];
207+ /// let n = stream2.try_io(|| {
208+ /// let res = unsafe {
209+ /// WinSock::recv(
210+ /// stream2.as_raw_socket().try_into().unwrap(),
211+ /// &mut buf as *mut _ as *mut _,
212+ /// buf.len() as c_int,
213+ /// 0
214+ /// )
215+ /// };
216+ /// if res != WinSock::SOCKET_ERROR {
217+ /// Ok(res as usize)
218+ /// } else {
219+ /// // If EAGAIN or EWOULDBLOCK is set by WinSock::recv, the closure
220+ /// // should return `WouldBlock` error.
221+ /// Err(io::Error::last_os_error())
222+ /// }
223+ /// }).unwrap();
224+ /// eprintln!("read {} bytes", n);
225+ /// }
226+ /// });
237227 /// # handle.join().unwrap();
238228 /// # Ok(())
239229 /// # }
@@ -248,49 +238,49 @@ impl UnixStream {
248238
249239impl Read for UnixStream {
250240 fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
251- self . inner . do_io ( |inner| ( & * inner) . read ( buf) )
241+ self . inner . do_io ( |mut inner| inner. read ( buf) )
252242 }
253243
254244 fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
255- self . inner . do_io ( |inner| ( & * inner) . read_vectored ( bufs) )
245+ self . inner . do_io ( |mut inner| inner. read_vectored ( bufs) )
256246 }
257247}
258248
259249impl < ' a > Read for & ' a UnixStream {
260250 fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
261- self . inner . do_io ( |inner| ( & * inner) . read ( buf) )
251+ self . inner . do_io ( |mut inner| inner. read ( buf) )
262252 }
263253
264254 fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
265- self . inner . do_io ( |inner| ( & * inner) . read_vectored ( bufs) )
255+ self . inner . do_io ( |mut inner| inner. read_vectored ( bufs) )
266256 }
267257}
268258
269259impl Write for UnixStream {
270260 fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
271- self . inner . do_io ( |inner| ( & * inner) . write ( buf) )
261+ self . inner . do_io ( |mut inner| inner. write ( buf) )
272262 }
273263
274264 fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
275- self . inner . do_io ( |inner| ( & * inner) . write_vectored ( bufs) )
265+ self . inner . do_io ( |mut inner| inner. write_vectored ( bufs) )
276266 }
277267
278268 fn flush ( & mut self ) -> io:: Result < ( ) > {
279- self . inner . do_io ( |inner| ( & * inner) . flush ( ) )
269+ self . inner . do_io ( |mut inner| inner. flush ( ) )
280270 }
281271}
282272
283273impl < ' a > Write for & ' a UnixStream {
284274 fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
285- self . inner . do_io ( |inner| ( & * inner) . write ( buf) )
275+ self . inner . do_io ( |mut inner| inner. write ( buf) )
286276 }
287277
288278 fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
289- self . inner . do_io ( |inner| ( & * inner) . write_vectored ( bufs) )
279+ self . inner . do_io ( |mut inner| inner. write_vectored ( bufs) )
290280 }
291281
292282 fn flush ( & mut self ) -> io:: Result < ( ) > {
293- self . inner . do_io ( |inner| ( & * inner) . flush ( ) )
283+ self . inner . do_io ( |mut inner| inner. flush ( ) )
294284 }
295285}
296286
0 commit comments