Rollup merge of #78044 - oberien:empty-seek, r=m-ou-se
Implement io::Seek for io::Empty Fix #78029
This commit is contained in:
commit
1bf130519c
@ -4,7 +4,7 @@
|
||||
mod tests;
|
||||
|
||||
use crate::fmt;
|
||||
use crate::io::{self, BufRead, Initializer, IoSlice, IoSliceMut, Read, Write};
|
||||
use crate::io::{self, BufRead, Initializer, IoSlice, IoSliceMut, Read, Seek, SeekFrom, Write};
|
||||
|
||||
/// A reader which is always at EOF.
|
||||
///
|
||||
@ -58,6 +58,21 @@ impl BufRead for Empty {
|
||||
fn consume(&mut self, _n: usize) {}
|
||||
}
|
||||
|
||||
#[stable(feature = "empty_seek", since = "1.51.0")]
|
||||
impl Seek for Empty {
|
||||
fn seek(&mut self, _pos: SeekFrom) -> io::Result<u64> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
fn stream_len(&mut self) -> io::Result<u64> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
fn stream_position(&mut self) -> io::Result<u64> {
|
||||
Ok(0)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "std_debug", since = "1.16.0")]
|
||||
impl fmt::Debug for Empty {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::io::prelude::*;
|
||||
use crate::io::{copy, empty, repeat, sink, Empty, Repeat, Sink};
|
||||
use crate::io::{copy, empty, repeat, sink, Empty, Repeat, SeekFrom, Sink};
|
||||
|
||||
#[test]
|
||||
fn copy_copies() {
|
||||
@ -29,6 +29,26 @@ fn empty_reads() {
|
||||
assert_eq!(e.by_ref().read(&mut [0; 1024]).unwrap(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_seeks() {
|
||||
let mut e = empty();
|
||||
assert!(matches!(e.seek(SeekFrom::Start(0)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Start(1)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Start(u64::MAX)), Ok(0)));
|
||||
|
||||
assert!(matches!(e.seek(SeekFrom::End(i64::MIN)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::End(-1)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::End(0)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::End(1)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::End(i64::MAX)), Ok(0)));
|
||||
|
||||
assert!(matches!(e.seek(SeekFrom::Current(i64::MIN)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Current(-1)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Current(0)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Current(1)), Ok(0)));
|
||||
assert!(matches!(e.seek(SeekFrom::Current(i64::MAX)), Ok(0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn repeat_repeats() {
|
||||
let mut r = repeat(4);
|
||||
|
Loading…
Reference in New Issue
Block a user