diff options
| author | Ryan Levick <ryan.levick@gmail.com> | 2019-04-11 17:35:36 +0200 |
|---|---|---|
| committer | Ryan Levick <ryan.levick@gmail.com> | 2019-04-11 17:35:36 +0200 |
| commit | 8678164483bd1509137ce0ee7992f6c25e55df10 (patch) | |
| tree | 5d466241358491f700d500c4bc3ad683b2294aac /src/libstd/sys/wasi/ext | |
| parent | 96d700f1b7bc9c53fa0d11567adb1ed2c1c27e79 (diff) | |
| download | rust-8678164483bd1509137ce0ee7992f6c25e55df10.tar.gz rust-8678164483bd1509137ce0ee7992f6c25e55df10.zip | |
Impl RawFd converstion traits for TcpListener, TcpStream and UdpSocket
Diffstat (limited to 'src/libstd/sys/wasi/ext')
| -rw-r--r-- | src/libstd/sys/wasi/ext/io.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/libstd/sys/wasi/ext/io.rs b/src/libstd/sys/wasi/ext/io.rs index cf75a96d28c..12afd1d42dc 100644 --- a/src/libstd/sys/wasi/ext/io.rs +++ b/src/libstd/sys/wasi/ext/io.rs @@ -5,6 +5,7 @@ use crate::fs; use crate::io; use crate::sys; +use crate::net; use crate::sys_common::{AsInner, FromInner, IntoInner}; /// Raw file descriptors. @@ -50,6 +51,60 @@ pub trait IntoRawFd { fn into_raw_fd(self) -> RawFd; } +impl AsRawFd for net::TcpStream { + fn as_raw_fd(&self) -> RawFd { + self.as_inner().fd().as_raw() + } +} + +impl FromRawFd for net::TcpStream { + unsafe fn from_raw_fd(fd: RawFd) -> net::TcpStream { + net::TcpStream::from_inner(sys::net::TcpStream::from_inner(fd)) + } +} + +impl IntoRawFd for net::TcpStream { + fn into_raw_fd(self) -> RawFd { + self.into_inner().into_fd().into_raw() + } +} + +impl AsRawFd for net::TcpListener { + fn as_raw_fd(&self) -> RawFd { + self.as_inner().fd().as_raw() + } +} + +impl FromRawFd for net::TcpListener { + unsafe fn from_raw_fd(fd: RawFd) -> net::TcpListener { + net::TcpListener::from_inner(sys::net::TcpListener::from_inner(fd)) + } +} + +impl IntoRawFd for net::TcpListener { + fn into_raw_fd(self) -> RawFd { + self.into_inner().into_fd().into_raw() + } +} + +impl AsRawFd for net::UdpSocket { + fn as_raw_fd(&self) -> RawFd { + self.as_inner().fd().as_raw() + } +} + +impl FromRawFd for net::UdpSocket { + unsafe fn from_raw_fd(fd: RawFd) -> net::UdpSocket { + net::UdpSocket::from_inner(sys::net::UdpSocket::from_inner(fd)) + } +} + +impl IntoRawFd for net::UdpSocket { + fn into_raw_fd(self) -> RawFd { + self.into_inner().into_fd().into_raw() + } +} + impl AsRawFd for fs::File { fn as_raw_fd(&self) -> RawFd { self.as_inner().fd().as_raw() |
