[−][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> PosRead for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
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]
Performs copy-assignment from source
. Read more
impl<P: Debug> Debug for ReadPos<P> where
P: PosRead,
[src]
P: PosRead,
impl<P> Seek 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 [IoVecMut]) -> Result<usize, Error>
[src]
iovec
)Like read
, except that it reads into a slice of buffers. Read more
unsafe fn initializer(&self) -> Initializer
[src]
read_initializer
)Determines if this Read
er 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]
R: Read,
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
Blanket Implementations
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T, U> TryFrom 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> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,