Skip to content

Commit 1be481d

Browse files
committed
Implement Read/Write for &pipe::Sender/&pipe::Receiver
1 parent 9c438c7 commit 1be481d

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/sys/unix/pipe.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,20 @@ impl Write for Sender {
254254
}
255255
}
256256

257+
impl Write for &Sender {
258+
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
259+
self.inner.do_io(|sender| (&*sender).write(buf))
260+
}
261+
262+
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
263+
self.inner.do_io(|sender| (&*sender).write_vectored(bufs))
264+
}
265+
266+
fn flush(&mut self) -> io::Result<()> {
267+
self.inner.do_io(|sender| (&*sender).flush())
268+
}
269+
}
270+
257271
/// # Notes
258272
///
259273
/// The underlying pipe is **not** set to non-blocking.
@@ -333,6 +347,16 @@ impl Read for Receiver {
333347
}
334348
}
335349

350+
impl Read for &Receiver {
351+
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
352+
self.inner.do_io(|sender| (&*sender).read(buf))
353+
}
354+
355+
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
356+
self.inner.do_io(|sender| (&*sender).read_vectored(bufs))
357+
}
358+
}
359+
336360
/// # Notes
337361
///
338362
/// The underlying pipe is **not** set to non-blocking.

0 commit comments

Comments
 (0)