Skip to content

Commit ed812c7

Browse files
committed
Add AsFd implementations for stdio lock types on WASI.
This mirrors the implementations on Unix platforms, and also mirrors the existing `AsRawFd` impls. This is similar to rust-lang#100892, but is for the `*Lock` types.
1 parent e7119a0 commit ed812c7

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

library/std/src/sys/wasi/stdio.rs

+21
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ impl AsFd for Stdin {
3030
}
3131
}
3232

33+
impl<'a> AsFd for StdinLock<'a> {
34+
#[inline]
35+
fn as_fd(&self) -> BorrowedFd<'_> {
36+
unsafe { BorrowedFd::borrow_raw(0) }
37+
}
38+
}
39+
3340
impl io::Read for Stdin {
3441
fn read(&mut self, data: &mut [u8]) -> io::Result<usize> {
3542
self.read_vectored(&mut [IoSliceMut::new(data)])
@@ -65,6 +72,13 @@ impl AsFd for Stdout {
6572
}
6673
}
6774

75+
impl<'a> AsFd for StdoutLock<'a> {
76+
#[inline]
77+
fn as_fd(&self) -> BorrowedFd<'_> {
78+
unsafe { BorrowedFd::borrow_raw(1) }
79+
}
80+
}
81+
6882
impl io::Write for Stdout {
6983
fn write(&mut self, data: &[u8]) -> io::Result<usize> {
7084
self.write_vectored(&[IoSlice::new(data)])
@@ -103,6 +117,13 @@ impl AsFd for Stderr {
103117
}
104118
}
105119

120+
impl<'a> AsFd for StderrLock<'a> {
121+
#[inline]
122+
fn as_fd(&self) -> BorrowedFd<'_> {
123+
unsafe { BorrowedFd::borrow_raw(2) }
124+
}
125+
}
126+
106127
impl io::Write for Stderr {
107128
fn write(&mut self, data: &[u8]) -> io::Result<usize> {
108129
self.write_vectored(&[IoSlice::new(data)])

0 commit comments

Comments
 (0)