[−][src]Struct olio::fs::ReadPos
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]
P: PosRead,
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]
P: PosRead + Clone,
ⓘ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]
P: PosRead + Clone,
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]
impl<P: Debug> Debug for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
impl<P> PosRead for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
impl<P> Read for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>
1.36.0[src]
unsafe fn initializer(&self) -> Initializer
[src]
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
1.0.0[src]
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
fn bytes(self) -> Bytes<Self>
1.0.0[src]
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
impl<P> Seek for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
Auto Trait Implementations
impl<P> RefUnwindSafe for ReadPos<P> where
P: RefUnwindSafe,
P: RefUnwindSafe,
impl<P> Send for ReadPos<P> where
P: Send,
P: Send,
impl<P> Sync for ReadPos<P> where
P: Sync,
P: Sync,
impl<P> Unpin for ReadPos<P> where
P: Unpin,
P: Unpin,
impl<P> UnwindSafe for ReadPos<P> where
P: UnwindSafe,
P: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,