Trait positioned_io::ReadAt
[−]
[src]
pub trait ReadAt { fn read_at(&self, pos: u64, buf: &mut [u8]) -> Result<usize>; fn read_exact_at(&self, pos: u64, buf: &mut [u8]) -> Result<()> { ... } }
Trait for reading at an offset.
Implementations should be able to read bytes without changing any sort of read-position.
Self should not change at all. Buffering reads is unlikely to be useful, since each time
read_at()
is called, the position may be completely different.
Examples
Read the fifth 512-byte sector of a file:
use positioned_io::ReadAt; let file = try!(File::open("foo.data")); let mut buf = vec![0; 512]; let bytes_read = try!(file.read_at(2048, &mut buf));
Required Methods
fn read_at(&self, pos: u64, buf: &mut [u8]) -> Result<usize>
Read bytes from an offset in this source into a buffer, returning how many bytes were read.
This function may yield fewer bytes than the size of buf
, if it was interrupted or hit
end-of-file.
See Read::read()
.
Provided Methods
fn read_exact_at(&self, pos: u64, buf: &mut [u8]) -> Result<()>
Read the exact number of bytes required to fill buf
, from an offset.
If only a lesser number of bytes can be read, will yield an error.
Implementors
impl<I, E: ByteOrder> ReadAt for ByteIo<I, E> where I: ReadAt
impl<I> ReadAt for Slice<I> where I: ReadAt
impl ReadAt for File
impl<'a> ReadAt for &'a [u8]
impl<'a> ReadAt for &'a mut [u8]
impl ReadAt for Vec<u8>
impl<'a, R: ReadAt + ?Sized> ReadAt for &'a R
impl<'a, R: ReadAt + ?Sized> ReadAt for &'a mut R
impl<'a, R> ReadAt for &'a RefCell<R> where R: ReadAt