about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThalia Archibald <thalia@archibald.dev>2025-02-04 19:27:55 -0800
committerThalia Archibald <thalia@archibald.dev>2025-02-20 17:06:33 -0700
commitd32eeb86b2f3e8e08ea40da6e374e754ed790cb4 (patch)
treef10f04d7d20116b4b17c32640fe05e29a474529b
parentf04bbc60f8c353ee5ba0677bc583ac4a88b2c180 (diff)
downloadrust-d32eeb86b2f3e8e08ea40da6e374e754ed790cb4.tar.gz
rust-d32eeb86b2f3e8e08ea40da6e374e754ed790cb4.zip
Implement read_buf for WASI stdin
-rw-r--r--library/std/src/sys/pal/wasi/stdio.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/library/std/src/sys/pal/wasi/stdio.rs b/library/std/src/sys/pal/wasi/stdio.rs
index d08b772e5fc..fb21cb4d393 100644
--- a/library/std/src/sys/pal/wasi/stdio.rs
+++ b/library/std/src/sys/pal/wasi/stdio.rs
@@ -1,7 +1,7 @@
 #![forbid(unsafe_op_in_unsafe_fn)]
 
 use super::fd::WasiFd;
-use crate::io::{self, IoSlice, IoSliceMut};
+use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut};
 use crate::mem::ManuallyDrop;
 use crate::os::raw;
 use crate::os::wasi::io::{AsRawFd, FromRawFd};
@@ -28,6 +28,10 @@ impl io::Read for Stdin {
         self.read_vectored(&mut [IoSliceMut::new(data)])
     }
 
+    fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> io::Result<()> {
+        ManuallyDrop::new(unsafe { WasiFd::from_raw_fd(self.as_raw_fd()) }).read_buf(buf)
+    }
+
     fn read_vectored(&mut self, data: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
         ManuallyDrop::new(unsafe { WasiFd::from_raw_fd(self.as_raw_fd()) }).read(data)
     }
@@ -64,6 +68,7 @@ impl io::Write for Stdout {
     fn is_write_vectored(&self) -> bool {
         true
     }
+
     fn flush(&mut self) -> io::Result<()> {
         Ok(())
     }