[][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> 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.

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

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

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

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

Auto Trait Implementations

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

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

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

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

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

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

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

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

type Owned = T

The resulting type after obtaining ownership.

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.