1#[cfg(unix)]
2mod unix {
3 use crate::TcpStream;
4 use std::{
5 net::TcpStream as StdTcpStream,
6 os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, RawFd},
7 };
8
9 impl AsFd for TcpStream {
10 fn as_fd(&self) -> BorrowedFd<'_> {
11 <StdTcpStream as AsFd>::as_fd(self)
12 }
13 }
14
15 impl AsRawFd for TcpStream {
16 fn as_raw_fd(&self) -> RawFd {
17 <StdTcpStream as AsRawFd>::as_raw_fd(self)
18 }
19 }
20
21 impl AsRawFd for &TcpStream {
22 fn as_raw_fd(&self) -> RawFd {
23 <StdTcpStream as AsRawFd>::as_raw_fd(self)
24 }
25 }
26
27 impl FromRawFd for TcpStream {
28 unsafe fn from_raw_fd(fd: RawFd) -> Self {
29 Self::Plain(unsafe { StdTcpStream::from_raw_fd(fd) }, false)
30 }
31 }
32}
33
34#[cfg(windows)]
35mod windows {
36 use crate::TcpStream;
37 use std::{
38 net::TcpStream as StdTcpStream,
39 os::windows::io::{AsRawSocket, AsSocket, BorrowedSocket, FromRawSocket, RawSocket},
40 };
41
42 impl AsSocket for TcpStream {
43 fn as_socket(&self) -> BorrowedSocket<'_> {
44 <StdTcpStream as AsSocket>::as_socket(self)
45 }
46 }
47
48 impl AsRawSocket for TcpStream {
49 fn as_raw_socket(&self) -> RawSocket {
50 <StdTcpStream as AsRawSocket>::as_raw_socket(self)
51 }
52 }
53
54 impl AsRawSocket for &TcpStream {
55 fn as_raw_socket(&self) -> RawSocket {
56 <StdTcpStream as AsRawSocket>::as_raw_socket(self)
57 }
58 }
59
60 impl FromRawSocket for TcpStream {
61 unsafe fn from_raw_socket(socket: RawSocket) -> Self {
62 Self::Plain(unsafe { StdTcpStream::from_raw_socket(socket) }, false)
63 }
64 }
65}