pub struct BufferedMarkableReader<R> { /* private fields */ }
Expand description

Reads bytes from the inner source with the additional ability to mark a stream at a point that can be returned to later using the a call to reset(). This reader also makes large, infrequent, reads to the underlying reader to increase effeciency read, which ideal when system calls may be involved (e.g., File reads), but offer little benefit with in-memory readers (e.g., vecs).

Whlie the stream is marked all susequent reads are returned as usual, but are also buffered, which is what allows for returning to a previous part of the stream.

Implementations§

source§

impl<R> BufferedMarkableReader<R>
where R: Read,

source

pub fn new(inner: R) -> BufferedMarkableReader<R>

Creates a new reader with an unbounded marked buffer and a buffered reader limited to 8KB by default. The use of this is very similar to that of the std::io::BufReader

Example
source

pub fn new_with_limited_back_buffer( inner: R, limit: usize ) -> BufferedMarkableReader<R>

Creates a new reader with an limited marked buffer and a buffered reader limited to 8KB by default. Any reads that exceed the provided limit will result in an std::io::Error(ErrorKind::OutOfMemory) error The use of this is very similar to that of the std::io::BufReader

Example
source

pub fn new_with_capacity_and_limit( inner: R, back_buffer_capacity: usize, reader_buffer_capacity: usize ) -> BufferedMarkableReader<R>

Creates a new reader using the provided capacities as the initial capacity and limit. Any reads that exceed the provided limit will result in an std::io::Error(ErrorKind::OutOfMemory) error The use of this is very similar to that of the std::io::BufReader

Example
source

pub fn into_inner(self) -> R

Returns the inner reader. IMPORTANT this will likely result in data loss of whatever data has been read into the buffer

Trait Implementations§

source§

impl<R> From<R> for BufferedMarkableReader<R>
where R: Read,

source§

fn from(value: R) -> Self

Converts to this type from the input type.
source§

impl<R> MarkerStream for BufferedMarkableReader<R>

source§

fn mark(&mut self) -> usize

Marks the location of the inner stream. From tis point forward reads will be cached. If the stream was marked prior to this call the current buffer will be discarded.

Returns the number of bytes that were discarded as a result of this operation

source§

fn reset(&mut self)

Resets the stream previously marked position, if it is set. If the reader was not previously marked, this has no affect.

source§

fn clear_buffer(&mut self)

Clears the current buffer dropping any values that have been cached.
source§

impl<R> Read for BufferedMarkableReader<R>
where R: Read,

source§

fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
1.36.0 · source§

fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

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

fn is_read_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Reader has an efficient read_vectored implementation. Read more
1.0.0 · source§

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

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

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

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

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

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

fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Pull some bytes from this source into the specified buffer. Read more
source§

fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Read the exact number of bytes required to fill cursor. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · source§

fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

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

Auto Trait Implementations§

§

impl<R> RefUnwindSafe for BufferedMarkableReader<R>
where R: RefUnwindSafe,

§

impl<R> Send for BufferedMarkableReader<R>
where R: Send,

§

impl<R> Sync for BufferedMarkableReader<R>
where R: Sync,

§

impl<R> Unpin for BufferedMarkableReader<R>
where R: Unpin,

§

impl<R> UnwindSafe for BufferedMarkableReader<R>
where R: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.