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

Implementations

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]

pub fn subslice(&self, start: u64, end: u64) -> ReadSlice<P>

Notable traits for ReadSlice<P>

impl<P> Read for ReadSlice<P> where
    P: PosRead
[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]

pub 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
[src]

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

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

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

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

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.