@@ -41,21 +41,12 @@ impl UnixStream {
4141 /// The Unix stream here will not have `connect` called on it, so it
4242 /// should already be connected via some other means (be it manually, or
4343 /// the standard library).
44- #[ cfg( unix) ]
45- #[ cfg_attr( docsrs, doc( cfg( unix) ) ) ]
4644 pub fn from_std ( stream : net:: UnixStream ) -> UnixStream {
4745 UnixStream {
4846 inner : IoSource :: new ( stream) ,
4947 }
5048 }
5149
52- #[ cfg( windows) ]
53- pub ( crate ) fn from_std ( stream : net:: UnixStream ) -> UnixStream {
54- UnixStream {
55- inner : IoSource :: new ( stream) ,
56- }
57- }
58-
5950 /// Creates an unnamed pair of connected sockets.
6051 ///
6152 /// Returns two `UnixStream`s which are connected to each other.
@@ -170,34 +161,6 @@ impl UnixStream {
170161 /// # let _ = std::fs::remove_file(&file_path);
171162 /// let server = UnixListener::bind(&file_path).unwrap();
172163 ///
173- /// let handle = std::thread::spawn(move || {
174- /// if let Ok((stream2, _)) = server.accept() {
175- /// // Wait until the stream is readable...
176- ///
177- /// // Read from the stream using a direct WinSock call, of course the
178- /// // `io::Read` implementation would be easier to use.
179- /// let mut buf = [0; 512];
180- /// let n = stream2.try_io(|| {
181- /// let res = unsafe {
182- /// WinSock::recv(
183- /// stream2.as_raw_socket().try_into().unwrap(),
184- /// &mut buf as *mut _ as *mut _,
185- /// buf.len() as c_int,
186- /// 0
187- /// )
188- /// };
189- /// if res != WinSock::SOCKET_ERROR {
190- /// Ok(res as usize)
191- /// } else {
192- /// // If EAGAIN or EWOULDBLOCK is set by WinSock::recv, the closure
193- /// // should return `WouldBlock` error.
194- /// Err(io::Error::last_os_error())
195- /// }
196- /// }).unwrap();
197- /// eprintln!("read {} bytes", n);
198- /// }
199- /// });
200- ///
201164 /// let stream1 = UnixStream::connect(&file_path).unwrap();
202165 ///
203166 /// // Wait until the stream is writable...
@@ -226,6 +189,33 @@ impl UnixStream {
226189 /// })?;
227190 /// eprintln!("write {} bytes", n);
228191 ///
192+ /// let handle = std::thread::spawn(move || {
193+ /// if let Ok((stream2, _)) = server.accept() {
194+ /// // Wait until the stream is readable...
195+ ///
196+ /// // Read from the stream using a direct WinSock call, of course the
197+ /// // `io::Read` implementation would be easier to use.
198+ /// let mut buf = [0; 512];
199+ /// let n = stream2.try_io(|| {
200+ /// let res = unsafe {
201+ /// WinSock::recv(
202+ /// stream2.as_raw_socket().try_into().unwrap(),
203+ /// &mut buf as *mut _ as *mut _,
204+ /// buf.len() as c_int,
205+ /// 0
206+ /// )
207+ /// };
208+ /// if res != WinSock::SOCKET_ERROR {
209+ /// Ok(res as usize)
210+ /// } else {
211+ /// // If EAGAIN or EWOULDBLOCK is set by WinSock::recv, the closure
212+ /// // should return `WouldBlock` error.
213+ /// Err(io::Error::last_os_error())
214+ /// }
215+ /// }).unwrap();
216+ /// eprintln!("read {} bytes", n);
217+ /// }
218+ /// });
229219 /// # handle.join().unwrap();
230220 /// # Ok(())
231221 /// # }
@@ -240,49 +230,49 @@ impl UnixStream {
240230
241231impl Read for UnixStream {
242232 fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
243- self . inner . do_io ( |inner| ( & * inner) . read ( buf) )
233+ self . inner . do_io ( |mut inner| inner. read ( buf) )
244234 }
245235
246236 fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
247- self . inner . do_io ( |inner| ( & * inner) . read_vectored ( bufs) )
237+ self . inner . do_io ( |mut inner| inner. read_vectored ( bufs) )
248238 }
249239}
250240
251241impl < ' a > Read for & ' a UnixStream {
252242 fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
253- self . inner . do_io ( |inner| ( & * inner) . read ( buf) )
243+ self . inner . do_io ( |mut inner| inner. read ( buf) )
254244 }
255245
256246 fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
257- self . inner . do_io ( |inner| ( & * inner) . read_vectored ( bufs) )
247+ self . inner . do_io ( |mut inner| inner. read_vectored ( bufs) )
258248 }
259249}
260250
261251impl Write for UnixStream {
262252 fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
263- self . inner . do_io ( |inner| ( & * inner) . write ( buf) )
253+ self . inner . do_io ( |mut inner| inner. write ( buf) )
264254 }
265255
266256 fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
267- self . inner . do_io ( |inner| ( & * inner) . write_vectored ( bufs) )
257+ self . inner . do_io ( |mut inner| inner. write_vectored ( bufs) )
268258 }
269259
270260 fn flush ( & mut self ) -> io:: Result < ( ) > {
271- self . inner . do_io ( |inner| ( & * inner) . flush ( ) )
261+ self . inner . do_io ( |mut inner| inner. flush ( ) )
272262 }
273263}
274264
275265impl < ' a > Write for & ' a UnixStream {
276266 fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
277- self . inner . do_io ( |inner| ( & * inner) . write ( buf) )
267+ self . inner . do_io ( |mut inner| inner. write ( buf) )
278268 }
279269
280270 fn write_vectored ( & mut self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
281- self . inner . do_io ( |inner| ( & * inner) . write_vectored ( bufs) )
271+ self . inner . do_io ( |mut inner| inner. write_vectored ( bufs) )
282272 }
283273
284274 fn flush ( & mut self ) -> io:: Result < ( ) > {
285- self . inner . do_io ( |inner| ( & * inner) . flush ( ) )
275+ self . inner . do_io ( |mut inner| inner. flush ( ) )
286276 }
287277}
288278
0 commit comments