Skip to content

Commit 1496d06

Browse files
taiki-ecramertj
authored andcommitted
Remove BufReader::poll_seek_relative
1 parent b978018 commit 1496d06

File tree

2 files changed

+0
-92
lines changed

2 files changed

+0
-92
lines changed

futures-util/src/io/buf_reader.rs

-30
Original file line numberDiff line numberDiff line change
@@ -103,33 +103,6 @@ impl<R: AsyncRead> BufReader<R> {
103103
}
104104
}
105105

106-
impl<R: AsyncRead + AsyncSeek> BufReader<R> {
107-
// https://github.com/rust-lang/rust/issues/31100
108-
/// Seeks relative to the current position. If the new position lies within the buffer,
109-
/// the buffer will not be flushed, allowing for more efficient seeks.
110-
/// This method does not return the location of the underlying reader, so the caller
111-
/// must track this information themselves if it is required.
112-
pub fn poll_seek_relative(
113-
mut self: Pin<&mut Self>,
114-
cx: &mut Context<'_>,
115-
offset: i64,
116-
) -> Poll<io::Result<()>> {
117-
let pos = self.pos as u64;
118-
if offset < 0 {
119-
if let Some(new_pos) = pos.checked_sub((-offset) as u64) {
120-
*self.as_mut().pos() = new_pos as usize;
121-
return Poll::Ready(Ok(()));
122-
}
123-
} else if let Some(new_pos) = pos.checked_add(offset as u64) {
124-
if new_pos <= self.cap as u64 {
125-
*self.as_mut().pos() = new_pos as usize;
126-
return Poll::Ready(Ok(()));
127-
}
128-
}
129-
self.poll_seek(cx, SeekFrom::Current(offset)).map(|res| res.map(|_| ()))
130-
}
131-
}
132-
133106
impl<R: AsyncRead> AsyncRead for BufReader<R> {
134107
fn poll_read(
135108
mut self: Pin<&mut Self>,
@@ -220,9 +193,6 @@ impl<R: AsyncRead + AsyncSeek> AsyncSeek for BufReader<R> {
220193
/// `.into_inner()` immediately after a seek yields the underlying reader
221194
/// at the same position.
222195
///
223-
/// To seek without discarding the internal buffer, use
224-
/// [`BufReader::poll_seek_relative`](BufReader::poll_seek_relative).
225-
///
226196
/// See [`AsyncSeek`](futures_io::AsyncSeek) for more details.
227197
///
228198
/// Note: In the edge case where you're seeking with `SeekFrom::Current(n)`

futures/tests/io_buf_reader.rs

-62
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,6 @@ macro_rules! run_fill_buf {
3636
}};
3737
}
3838

39-
macro_rules! run_seek_relative {
40-
($reader:expr, $offset:expr) => {{
41-
let mut cx = noop_context();
42-
loop {
43-
if let Poll::Ready(x) = Pin::new(&mut $reader).poll_seek_relative(&mut cx, $offset) {
44-
break x;
45-
}
46-
}
47-
}};
48-
}
49-
5039
#[test]
5140
fn test_buffered_reader() {
5241
let inner: &[u8] = &[5, 6, 7, 0, 1, 2, 3, 4];
@@ -99,57 +88,6 @@ fn test_buffered_reader_seek() {
9988
assert_eq!(block_on(reader.seek(SeekFrom::Current(-2))).ok(), Some(3));
10089
}
10190

102-
#[test]
103-
fn test_buffered_reader_seek_relative() {
104-
let inner: &[u8] = &[5, 6, 7, 0, 1, 2, 3, 4];
105-
let mut reader = BufReader::with_capacity(2, Cursor::new(inner));
106-
107-
assert!(run_seek_relative!(reader, 3).is_ok());
108-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[0, 1][..]));
109-
assert!(run_seek_relative!(reader, 0).is_ok());
110-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[0, 1][..]));
111-
assert!(run_seek_relative!(reader, 1).is_ok());
112-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[1][..]));
113-
assert!(run_seek_relative!(reader, -1).is_ok());
114-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[0, 1][..]));
115-
assert!(run_seek_relative!(reader, 2).is_ok());
116-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[2, 3][..]));
117-
}
118-
119-
#[test]
120-
fn test_buffered_reader_invalidated_after_read() {
121-
let inner: &[u8] = &[5, 6, 7, 0, 1, 2, 3, 4];
122-
let mut reader = BufReader::with_capacity(3, Cursor::new(inner));
123-
124-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[5, 6, 7][..]));
125-
Pin::new(&mut reader).consume(3);
126-
127-
let mut buffer = [0, 0, 0, 0, 0];
128-
assert_eq!(block_on(reader.read(&mut buffer)).ok(), Some(5));
129-
assert_eq!(buffer, [0, 1, 2, 3, 4]);
130-
131-
assert!(run_seek_relative!(reader, -2).is_ok());
132-
let mut buffer = [0, 0];
133-
assert_eq!(block_on(reader.read(&mut buffer)).ok(), Some(2));
134-
assert_eq!(buffer, [3, 4]);
135-
}
136-
137-
#[test]
138-
fn test_buffered_reader_invalidated_after_seek() {
139-
let inner: &[u8] = &[5, 6, 7, 0, 1, 2, 3, 4];
140-
let mut reader = BufReader::with_capacity(3, Cursor::new(inner));
141-
142-
assert_eq!(run_fill_buf!(reader).ok(), Some(&[5, 6, 7][..]));
143-
Pin::new(&mut reader).consume(3);
144-
145-
assert!(block_on(reader.seek(SeekFrom::Current(5))).is_ok());
146-
147-
assert!(run_seek_relative!(reader, -2).is_ok());
148-
let mut buffer = [0, 0];
149-
assert_eq!(block_on(reader.read(&mut buffer)).ok(), Some(2));
150-
assert_eq!(buffer, [3, 4]);
151-
}
152-
15391
#[test]
15492
fn test_buffered_reader_seek_underflow() {
15593
// gimmick reader that yields its position modulo 256 for each byte

0 commit comments

Comments
 (0)