[][src]Struct olio::fs::ReadPos

pub struct ReadPos<P> where
    P: PosRead
{ /* fields omitted */ }

Re-implements Read and Seek over PosRead using only positioned reads, and by maintaining an instance independent position.

PosRead is implemented for any Borrow<File> so this can own via ReadPos<File> or use a shared reference, as in ReadPos<&File> or ReadPos<Arc<File>>.

A fixed length is passed on construction and used solely to interpret SeekFrom::End. Reads are not constrained by this length. The length is neither checked against nor updated from the inner PosRead (for example via file metadata) and could deviate if concurrent writes or truncation is possible. Reads beyond the end of the inner PosRead will return 0 length. Seeking past the end is allowed by the platforms for File, and is also allowed for ReadPos.

Methods

impl<P> ReadPos<P> where
    P: PosRead
[src]

pub fn new(pos_read: P, length: u64) -> Self[src]

New instance for PosRead and fixed length. The initial position is the start (index 0).

pub fn len(&self) -> u64[src]

Return the length as provided on construction. This may differ from the inner PosRead length.

pub fn is_empty(&self) -> bool[src]

Return true if length is 0.

pub fn tell(&self) -> u64[src]

Return the current instance position. This is a convenience shorthand for seek(SeekFrom::Current(0)), is infallable, and does not require a mutable reference.

impl<P> ReadPos<P> where
    P: PosRead + Clone
[src]

Important traits for ReadSlice<P>
pub fn subslice(&self, start: u64, end: u64) -> ReadSlice<P>[src]

Return a new and independent ReadSlice by clone of the inner PosRead, for the range of byte offsets start..end, and positoned at start. This implementation panics if start is greater than end. Note that the end parameter is not checked against the length of self as passed on construction.

Trait Implementations

impl<P> PosRead for ReadPos<P> where
    P: PosRead
[src]

impl<P> Clone for ReadPos<P> where
    P: PosRead + Clone
[src]

fn clone(&self) -> Self[src]

Return a new, independent ReadPos by clone of the inner PosRead, with the same length as self, and at position 0.

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<P: Debug> Debug for ReadPos<P> where
    P: PosRead
[src]

impl<P> Seek for ReadPos<P> where
    P: PosRead
[src]

impl<P> Read for ReadPos<P> where
    P: PosRead
[src]

fn read_vectored(&mut self, bufs: &mut [IoVecMut]) -> Result<usize, Error>[src]

🔬 This is a nightly-only experimental API. (iovec)

Like read, except that it reads into a slice of buffers. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
1.0.0
[src]

Read all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0
[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0
[src]

Read the exact number of bytes required to fill buf. Read more

fn by_ref(&mut self) -> &mut Self
1.0.0
[src]

Creates a "by reference" adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>
1.0.0
[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0
[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>
1.0.0
[src]

Creates an adaptor which will read at most limit bytes from it. Read more

Auto Trait Implementations

impl<P> Send for ReadPos<P> where
    P: Send

impl<P> Sync for ReadPos<P> where
    P: Sync

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.