tcp_stream/
sys.rs

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}