pub struct MappedReader<R, F> { /* private fields */ }
Expand description
An async reader which allows a closure to map the output of the inner async reader into a new buffer. This allows things like compression/encryption to be layered on top of a normal reader.
NOTE: The closure must consume at least 1 byte for the reader to continue.
SAFETY: This currently creates the equivalent of Box<[MaybeUninit<u8>]>
,
but does so through use of accessing the allocator directly. Once new_uninit
is available on stable, Box::new_uninit_slice
will be used. This will
still utilize unsafe. A uninitialized buffer is acceptable because it’s
contents are only ever written to before reading only the written section.
ref: https://github.com/rust-lang/rust/issues/63291
Implementations§
Trait Implementations§
Source§impl<R, F> AsyncRead for MappedReader<R, F>
impl<R, F> AsyncRead for MappedReader<R, F>
impl<'pin, R, F> Unpin for MappedReader<R, F>where
PinnedFieldsOf<__MappedReader<'pin, R, F>>: Unpin,
Auto Trait Implementations§
impl<R, F> Freeze for MappedReader<R, F>
impl<R, F> RefUnwindSafe for MappedReader<R, F>where
R: RefUnwindSafe,
F: RefUnwindSafe,
impl<R, F> Send for MappedReader<R, F>
impl<R, F> Sync for MappedReader<R, F>
impl<R, F> UnwindSafe for MappedReader<R, F>where
R: UnwindSafe,
F: UnwindSafe,
Blanket Implementations§
Source§impl<R> AsyncReadExt for R
impl<R> AsyncReadExt for R
Source§fn chain<R>(self, next: R) -> Chain<Self, R>
fn chain<R>(self, next: R) -> Chain<Self, R>
Creates an adaptor which will chain this stream with another. Read more
Source§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
Tries to read some bytes directly into the given
buf
in asynchronous
manner, returning a future type. Read moreSource§fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
Creates a future which will read from the
AsyncRead
into bufs
using vectored
IO operations. Read moreSource§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
Creates a future which will read exactly enough bytes to fill
buf
,
returning an error if end of file (EOF) is hit sooner. Read moreSource§fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
Creates a future which will read all the bytes from this
AsyncRead
. Read moreSource§fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
Creates a future which will read all the bytes from this
AsyncRead
. Read moreSource§impl<R> AsyncReadUtil for Rwhere
R: AsyncRead,
impl<R> AsyncReadUtil for Rwhere
R: AsyncRead,
Source§fn observe<F>(self, f: F) -> ObservedReader<R, F>
fn observe<F>(self, f: F) -> ObservedReader<R, F>
Observe the bytes being read from
self
using the provided closure.
Refer to crate::ObservedReader
for more info.Source§fn map_read<F>(self, f: F) -> MappedReader<R, F>
fn map_read<F>(self, f: F) -> MappedReader<R, F>
Map the bytes being read from
self
into a new buffer using the
provided closure. Refer to crate::MappedReader
for more
info.fn buffered(self) -> BufReader<R>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more