]>
Commit | Line | Data |
---|---|---|
064997fb FG |
1 | //! Implementations of io-lifetimes' traits for socket2's types. In the |
2 | //! future, we'll prefer to have crates provide their own impls; this is | |
3 | //! just a temporary measure. | |
4 | ||
064997fb FG |
5 | #[cfg(any(unix, target_os = "wasi"))] |
6 | use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd}; | |
7 | #[cfg(windows)] | |
8 | use crate::{AsSocket, BorrowedSocket, FromSocket, IntoSocket, OwnedSocket}; | |
9 | #[cfg(unix)] | |
10 | use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; | |
11 | #[cfg(target_os = "wasi")] | |
12 | use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd}; | |
13 | #[cfg(windows)] | |
14 | use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket}; | |
15 | ||
064997fb FG |
16 | #[cfg(any(unix, target_os = "wasi"))] |
17 | impl AsFd for socket2::Socket { | |
18 | #[inline] | |
19 | fn as_fd(&self) -> BorrowedFd<'_> { | |
20 | unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } | |
21 | } | |
22 | } | |
23 | ||
24 | #[cfg(windows)] | |
25 | impl AsSocket for socket2::Socket { | |
26 | #[inline] | |
27 | fn as_socket(&self) -> BorrowedSocket<'_> { | |
28 | unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) } | |
29 | } | |
30 | } | |
31 | ||
32 | #[cfg(any(unix, target_os = "wasi"))] | |
33 | impl IntoFd for socket2::Socket { | |
34 | #[inline] | |
35 | fn into_fd(self) -> OwnedFd { | |
36 | unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) } | |
37 | } | |
38 | } | |
39 | ||
40 | #[cfg(any(unix, target_os = "wasi"))] | |
41 | impl From<socket2::Socket> for OwnedFd { | |
42 | #[inline] | |
43 | fn from(owned: socket2::Socket) -> Self { | |
44 | unsafe { OwnedFd::from_raw_fd(owned.into_raw_fd()) } | |
45 | } | |
46 | } | |
47 | ||
48 | #[cfg(windows)] | |
49 | impl IntoSocket for socket2::Socket { | |
50 | #[inline] | |
51 | fn into_socket(self) -> OwnedSocket { | |
52 | unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) } | |
53 | } | |
54 | } | |
55 | ||
56 | #[cfg(windows)] | |
57 | impl From<socket2::Socket> for OwnedSocket { | |
58 | #[inline] | |
59 | fn from(owned: socket2::Socket) -> Self { | |
60 | unsafe { Self::from_raw_socket(owned.into_raw_socket()) } | |
61 | } | |
62 | } | |
63 | ||
64 | #[cfg(any(unix, target_os = "wasi"))] | |
65 | impl FromFd for socket2::Socket { | |
66 | #[inline] | |
67 | fn from_fd(owned: OwnedFd) -> Self { | |
68 | unsafe { Self::from_raw_fd(owned.into_raw_fd()) } | |
69 | } | |
70 | } | |
71 | ||
72 | #[cfg(any(unix, target_os = "wasi"))] | |
73 | impl From<OwnedFd> for socket2::Socket { | |
74 | #[inline] | |
75 | fn from(owned: OwnedFd) -> Self { | |
76 | unsafe { Self::from_raw_fd(owned.into_raw_fd()) } | |
77 | } | |
78 | } | |
79 | ||
80 | #[cfg(windows)] | |
81 | impl FromSocket for socket2::Socket { | |
82 | #[inline] | |
83 | fn from_socket(owned: OwnedSocket) -> Self { | |
84 | unsafe { Self::from_raw_socket(owned.into_raw_socket()) } | |
85 | } | |
86 | } | |
87 | ||
88 | #[cfg(windows)] | |
89 | impl From<OwnedSocket> for socket2::Socket { | |
90 | #[inline] | |
91 | fn from(owned: OwnedSocket) -> Self { | |
92 | unsafe { Self::from_raw_socket(owned.into_raw_socket()) } | |
93 | } | |
94 | } |