pub struct Eof<R: Read> { /* fields omitted */ }
Track whether a stream has hit the end of file.
This allows slightly nicer code when reading lots of items using an uncooperative api,
or when you want an UnexpectedEof
only after the first byte.
It also simplifies determining the last chunk when processing
input in fixed-size chunks.
Eof::eof()
and – for consistency – the Read
implementation of Eof
ignore ErrorKind::Interrupted
errors and retry the operation.
use std::io;
use std::io::Read;
use std::fs::File;
use iowrap::Eof;
fn load() -> io::Result<Vec<u64>> {
let mut ret = Vec::new();
let mut file = Eof::new(File::open("foo.bin")?);
while !file.eof()? {
ret.push(third_party::parse_thing(&mut file));
}
Ok(ret)
}
mod third_party {
use std::io::Read;
pub fn parse_thing<R: Read>(mut from: R) -> u64 {
let mut buf = [0u8; 8];
from.read_exact(&mut buf).unwrap();
u64::from(buf[0])
}
}
Test if we are at the end of the stream.
If false, then a proceeding read()
will always succeed.
The buffered value, which we read while checking for EOF.
For consistency with eof()
, this implementation retries the
operation on ErrorKind::Interrupted
errors.
🔬 This is a nightly-only experimental API. (read_initializer
)
Determines if this Read
er can work with buffers of uninitialized memory. Read more
Read all bytes until EOF in this source, placing them into buf
. Read more
Read all bytes until EOF in this source, appending them to buf
. Read more
Read the exact number of bytes required to fill buf
. Read more
Creates a "by reference" adaptor for this instance of Read
. Read more
Transforms this Read
instance to an [Iterator
] over its bytes. Read more
Creates an adaptor which will chain this stream with another. Read more
Creates an adaptor which will read at most limit
bytes from it. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static