parent
bf469eb6c2
commit
f1cd17961c
2 changed files with 37 additions and 2 deletions
|
@ -4,7 +4,7 @@
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
use crate::fmt;
|
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.
|
/// A reader which is always at EOF.
|
||||||
///
|
///
|
||||||
|
@ -58,6 +58,21 @@ impl BufRead for Empty {
|
||||||
fn consume(&mut self, _n: usize) {}
|
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")]
|
#[stable(feature = "std_debug", since = "1.16.0")]
|
||||||
impl fmt::Debug for Empty {
|
impl fmt::Debug for Empty {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::io::prelude::*;
|
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]
|
#[test]
|
||||||
fn copy_copies() {
|
fn copy_copies() {
|
||||||
|
@ -29,6 +29,26 @@ fn empty_reads() {
|
||||||
assert_eq!(e.by_ref().read(&mut [0; 1024]).unwrap(), 0);
|
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]
|
#[test]
|
||||||
fn repeat_repeats() {
|
fn repeat_repeats() {
|
||||||
let mut r = repeat(4);
|
let mut r = repeat(4);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue