1
Fork 0

Rollup merge of #120900 - marcospb19:std-use-seek-stream-position, r=joshtriplett

std: use `stream_position` where applicable

by replacing `seek(SeekFrom::Current(0))` calls
This commit is contained in:
Guillaume Gomez 2024-04-14 23:24:32 +02:00 committed by GitHub
commit fa483a4829
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 29 deletions

View file

@ -114,7 +114,7 @@ fn test_buffered_reader_seek() {
assert_eq!(reader.seek(SeekFrom::Start(3)).ok(), Some(3));
assert_eq!(reader.fill_buf().ok(), Some(&[0, 1][..]));
assert_eq!(reader.seek(SeekFrom::Current(0)).ok(), Some(3));
assert_eq!(reader.stream_position().ok(), Some(3));
assert_eq!(reader.fill_buf().ok(), Some(&[0, 1][..]));
assert_eq!(reader.seek(SeekFrom::Current(1)).ok(), Some(4));
assert_eq!(reader.fill_buf().ok(), Some(&[1, 2][..]));
@ -230,6 +230,9 @@ fn test_buffered_reader_seek_underflow() {
Ok(len)
}
}
// note: this implementation of `Seek` is "broken" due to position
// wrapping, so calling `reader.seek(Current(0))` is semantically different
// than `reader.stream_position()`
impl Seek for PositionReader {
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
match pos {
@ -374,7 +377,7 @@ fn test_buffered_writer_seek() {
let mut w = BufWriter::with_capacity(3, io::Cursor::new(Vec::new()));
w.write_all(&[0, 1, 2, 3, 4, 5]).unwrap();
w.write_all(&[6, 7]).unwrap();
assert_eq!(w.seek(SeekFrom::Current(0)).ok(), Some(8));
assert_eq!(w.stream_position().ok(), Some(8));
assert_eq!(&w.get_ref().get_ref()[..], &[0, 1, 2, 3, 4, 5, 6, 7][..]);
assert_eq!(w.seek(SeekFrom::Start(2)).ok(), Some(2));
w.write_all(&[8, 9]).unwrap();