about summary refs log tree commit diff
path: root/library/std/src/sys/sgx
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2021-04-25 23:15:17 +0200
committerGitHub <noreply@github.com>2021-04-25 23:15:17 +0200
commit25508ebe680dc5ff9a2aa0e6f4c47e9757edd1c9 (patch)
tree1734802f61b460cc2e0e341574dd37cfd71738e7 /library/std/src/sys/sgx
parent139749934b174cbe556d4e026a76461e9aa8d0b3 (diff)
parentfbc2aadbfc6a54da9d8cc5929287d2bcc55c545e (diff)
Rollup merge of #84541 - KaiJewson:inline-raw, r=m-ou-se
Inline most raw socket, fd and handle conversions

Now that file descriptor types on Unix have niches, it is advantageous for user libraries which provide file descriptor wrappers (e.g. `Socket` from socket2) to store a `File` internally instead of a `RawFd`, so that the niche can be taken advantage of. However, doing so will currently result in worse performance as `IntoRawFd`, `FromRawFd` and `AsRawFd` are not inlined. This change adds `#[inline]` to those methods on std types that wrap file descriptors, handles or sockets.
Diffstat (limited to 'library/std/src/sys/sgx')
-rw-r--r--library/std/src/sys/sgx/ext/io.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/library/std/src/sys/sgx/ext/io.rs b/library/std/src/sys/sgx/ext/io.rs
index 795a4d190cf..7223ade6815 100644
--- a/library/std/src/sys/sgx/ext/io.rs
+++ b/library/std/src/sys/sgx/ext/io.rs
@@ -63,12 +63,14 @@ pub trait TryIntoRawFd: Sized {
 }
 
 impl AsRawFd for net::TcpStream {
+    #[inline]
     fn as_raw_fd(&self) -> RawFd {
         *self.as_inner().as_inner().as_inner().as_inner()
     }
 }
 
 impl AsRawFd for net::TcpListener {
+    #[inline]
     fn as_raw_fd(&self) -> RawFd {
         *self.as_inner().as_inner().as_inner().as_inner()
     }
@@ -87,6 +89,7 @@ pub struct TcpStreamMetadata {
 impl FromRawFd for net::TcpStream {
     type Metadata = TcpStreamMetadata;
 
+    #[inline]
     unsafe fn from_raw_fd(fd: RawFd, metadata: Self::Metadata) -> net::TcpStream {
         let fd = sys::fd::FileDesc::from_inner(fd);
         let socket = sys::net::Socket::from_inner((fd, metadata.local_addr));
@@ -105,6 +108,7 @@ pub struct TcpListenerMetadata {
 impl FromRawFd for net::TcpListener {
     type Metadata = TcpListenerMetadata;
 
+    #[inline]
     unsafe fn from_raw_fd(fd: RawFd, metadata: Self::Metadata) -> net::TcpListener {
         let fd = sys::fd::FileDesc::from_inner(fd);
         let socket = sys::net::Socket::from_inner((fd, metadata.local_addr));
@@ -113,6 +117,7 @@ impl FromRawFd for net::TcpListener {
 }
 
 impl TryIntoRawFd for net::TcpStream {
+    #[inline]
     fn try_into_raw_fd(self) -> Result<RawFd, Self> {
         let (socket, peer_addr) = self.into_inner().into_inner();
         match socket.try_into_inner() {
@@ -126,6 +131,7 @@ impl TryIntoRawFd for net::TcpStream {
 }
 
 impl TryIntoRawFd for net::TcpListener {
+    #[inline]
     fn try_into_raw_fd(self) -> Result<RawFd, Self> {
         match self.into_inner().into_inner().try_into_inner() {
             Ok(fd) => Ok(fd.into_inner()),