pub fn poll_seek_relative(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        offset: i64,
    ) -> Poll<io::Result<()>> {
        let pos = self.pos as u64;
        if offset < 0 {
            if let Some(new_pos) = pos.checked_sub((-offset) as u64) {
                *self.project().pos = new_pos as usize;
                return Poll::Ready(Ok(()));
            }
        } else if let Some(new_pos) = pos.checked_add(offset as u64) {
            if new_pos <= self.cap as u64 {
                *self.project().pos = new_pos as usize;
                return Poll::Ready(Ok(()));
            }
        }
        self.poll_seek(cx, SeekFrom::Current(offset)).map(|res| res.map(|_| ()))
    }
Attempts to seek relative to the current position. If the new position lies within the buffer,
the buffer will not be flushed, allowing for more efficient seeks.
This method does not return the location of the underlying reader, so the caller
must track this information themselves if it is required.
futures-util/src/io/buf_reader.rs