Skip to content

Commit bb63c37

Browse files
authored
Make non constructor methods of futures::io::{BufReader,BufWriter} not require inner trait bound (#2848)
1 parent 48b58c0 commit bb63c37

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

futures-util/src/io/buf_reader.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ impl<R: AsyncRead> BufReader<R> {
5252
let buffer = vec![0; capacity];
5353
Self { inner, buffer: buffer.into_boxed_slice(), pos: 0, cap: 0 }
5454
}
55+
}
5556

57+
impl<R> BufReader<R> {
5658
delegate_access_inner!(inner, R, ());
5759

5860
/// Returns a reference to the internally buffered data.

futures-util/src/io/buf_writer.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,26 @@ impl<W: AsyncWrite> BufWriter<W> {
7979
Poll::Ready(ret)
8080
}
8181

82+
/// Write directly using `inner`, bypassing buffering
83+
pub(super) fn inner_poll_write(
84+
self: Pin<&mut Self>,
85+
cx: &mut Context<'_>,
86+
buf: &[u8],
87+
) -> Poll<io::Result<usize>> {
88+
self.project().inner.poll_write(cx, buf)
89+
}
90+
91+
/// Write directly using `inner`, bypassing buffering
92+
pub(super) fn inner_poll_write_vectored(
93+
self: Pin<&mut Self>,
94+
cx: &mut Context<'_>,
95+
bufs: &[IoSlice<'_>],
96+
) -> Poll<io::Result<usize>> {
97+
self.project().inner.poll_write_vectored(cx, bufs)
98+
}
99+
}
100+
101+
impl<W> BufWriter<W> {
82102
delegate_access_inner!(inner, W, ());
83103

84104
/// Returns a reference to the internally buffered data.
@@ -131,24 +151,6 @@ impl<W: AsyncWrite> BufWriter<W> {
131151
this.buf.set_len(old_len + buf_len);
132152
}
133153
}
134-
135-
/// Write directly using `inner`, bypassing buffering
136-
pub(super) fn inner_poll_write(
137-
self: Pin<&mut Self>,
138-
cx: &mut Context<'_>,
139-
buf: &[u8],
140-
) -> Poll<io::Result<usize>> {
141-
self.project().inner.poll_write(cx, buf)
142-
}
143-
144-
/// Write directly using `inner`, bypassing buffering
145-
pub(super) fn inner_poll_write_vectored(
146-
self: Pin<&mut Self>,
147-
cx: &mut Context<'_>,
148-
bufs: &[IoSlice<'_>],
149-
) -> Poll<io::Result<usize>> {
150-
self.project().inner.poll_write_vectored(cx, bufs)
151-
}
152154
}
153155

154156
impl<W: AsyncWrite> AsyncWrite for BufWriter<W> {

0 commit comments

Comments
 (0)