pub struct AsyncZstdReader<'dict, R> { /* private fields */ }
Expand description
An reader that decompresses a zstd stream from an underlying
async reader. Works as either a tokio
or futures
reader if
their respective features are enabled.
The underyling reader R
should implement the following traits:
tokio
tokio::io::AsyncBufRead
(required fortokio::io::AsyncRead
andtokio::io::AsyncBufRead
impls)- (Optional)
tokio::io::AsyncSeek
(used when calling.seekable()
)
futures
futures::AsyncBufRead
(required forfutures::AsyncRead
andfutures::AsyncBufRead
impls)- (Optional)
futures::AsyncSeek
(used when calling.seekable()
)
For sync I/O support, see crate::ZstdReader
.
§Construction
Create a builder using AsyncZstdReader::builder_tokio
(recommended
for tokio
) or AsyncZstdReader::builder_futures
(recommended for
futures
); or use [ZstdReader::builder_buffered
] to use a custom
buffer for either. See ZstdReaderBuilder
for build options. Call
[AsyncZstdReaderBuilder::build
] to build the
AsyncZstdReader
instance.
// Tokio example
let reader = zstd_framed::AsyncZstdReader::builder_tokio(compressed_file)
// .with_seek_table(table) // Provide a seek table if available
.build()?;
// futures example
let reader = zstd_framed::AsyncZstdReader::builder_futures(compressed_file)
// .with_seek_table(table) // Provide a seek table if available
.build()?;
§Buffering
The decompressed zstd output is always buffered internally. Since the
reader must also implement tokio::io::AsyncBufRead
/
futures::AsyncBufRead
, the compressed input must also be buffered.
AsyncZstdReader::builder_tokio
and
AsyncZstdReader::builder_futures
will wrap any reader implmenting
tokio::io::AsyncRead
or futures::AsyncRead
(respectively)
with a recommended buffer size for the input stream. For more control
over how the input gets buffered, you can instead use
AsyncZstdReader::builder_buffered
.
§Seeking
If the underlying reader is seekable (i.e. it implements either
tokio::io::AsyncSeek
or futures::AsyncSeek
), you can call
.seekable()
to convert it to a seekable reader. See
AsyncZstdSeekableReader
for notes and caveats about seeking.
Implementations§
Source§impl<'dict, R> AsyncZstdReader<'dict, R>
impl<'dict, R> AsyncZstdReader<'dict, R>
Sourcepub fn builder_tokio(reader: R) -> ZstdReaderBuilder<BufReader<R>>where
R: AsyncRead,
pub fn builder_tokio(reader: R) -> ZstdReaderBuilder<BufReader<R>>where
R: AsyncRead,
Create a new zstd reader that decompresses the zstd stream from the underlying Tokio reader. The provided reader will be wrapped with an appropriately-sized buffer.
Sourcepub fn builder_futures(reader: R) -> ZstdReaderBuilder<BufReader<R>>where
R: AsyncRead,
pub fn builder_futures(reader: R) -> ZstdReaderBuilder<BufReader<R>>where
R: AsyncRead,
Create a new zstd reader that decompresses the zstd stream from
the underlying futures
reader. The provided reader will be
wrapped with an appropriately-sized buffer.
Sourcepub fn builder_buffered(reader: R) -> ZstdReaderBuilder<R>
pub fn builder_buffered(reader: R) -> ZstdReaderBuilder<R>
Create a new zstd reader that decompresses the zstd stream from
the underlying reader. The underlying reader must implement
either tokio::io::AsyncBufRead
or futures::AsyncBufRead
,
and its buffer will be used directly. When in doubt, use
one of the other builder methods to use an appropriate buffer size
for decompressing a zstd stream.
Sourcepub fn seekable(self) -> AsyncZstdSeekableReader<'dict, R>
pub fn seekable(self) -> AsyncZstdSeekableReader<'dict, R>
Wrap the reader with AsyncZstdSeekableReader
, which adds support
for seeking if the underlying reader supports seeking.
Trait Implementations§
Source§impl<R> AsyncBufRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
impl<R> AsyncBufRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
Source§impl<R> AsyncBufRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
impl<R> AsyncBufRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
Source§impl<R> AsyncRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
impl<R> AsyncRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
Source§impl<R> AsyncRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
impl<R> AsyncRead for AsyncZstdReader<'_, R>where
R: AsyncBufRead,
impl<'__pin, 'dict, R> Unpin for AsyncZstdReader<'dict, R>where
PinnedFieldsOf<__Origin<'__pin, 'dict, R>>: Unpin,
Auto Trait Implementations§
impl<'dict, R> Freeze for AsyncZstdReader<'dict, R>where
R: Freeze,
impl<'dict, R> RefUnwindSafe for AsyncZstdReader<'dict, R>where
R: RefUnwindSafe,
impl<'dict, R> Send for AsyncZstdReader<'dict, R>where
R: Send,
impl<'dict, R> Sync for AsyncZstdReader<'dict, R>where
R: Sync,
impl<'dict, R> !UnwindSafe for AsyncZstdReader<'dict, R>
Blanket Implementations§
Source§impl<R> AsyncBufReadExt for Rwhere
R: AsyncBufRead + ?Sized,
impl<R> AsyncBufReadExt for Rwhere
R: AsyncBufRead + ?Sized,
Source§fn read_until<'a>(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8>,
) -> ReadUntil<'a, Self>where
Self: Unpin,
fn read_until<'a>(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8>,
) -> ReadUntil<'a, Self>where
Self: Unpin,
Source§fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>where
Self: Unpin,
fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>where
Self: Unpin,
Source§fn split(self, byte: u8) -> Split<Self>
fn split(self, byte: u8) -> Split<Self>
byte
. Read moreSource§fn fill_buf(&mut self) -> FillBuf<'_, Self>where
Self: Unpin,
fn fill_buf(&mut self) -> FillBuf<'_, Self>where
Self: Unpin,
Source§impl<R> AsyncBufReadExt for Rwhere
R: AsyncBufRead + ?Sized,
impl<R> AsyncBufReadExt for Rwhere
R: AsyncBufRead + ?Sized,
Source§fn fill_buf(&mut self) -> FillBuf<'_, Self>where
Self: Unpin,
fn fill_buf(&mut self) -> FillBuf<'_, Self>where
Self: Unpin,
Source§fn consume_unpin(&mut self, amt: usize)where
Self: Unpin,
fn consume_unpin(&mut self, amt: usize)where
Self: Unpin,
Source§fn read_until<'a>(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8>,
) -> ReadUntil<'a, Self>where
Self: Unpin,
fn read_until<'a>(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8>,
) -> ReadUntil<'a, Self>where
Self: Unpin,
buf
until the delimiter byte
or EOF is reached.
This method is the async equivalent to BufRead::read_until
. Read moreSource§fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>where
Self: Unpin,
fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>where
Self: Unpin,
buf
until a newline (the 0xA byte) or EOF is reached,
This method is the async equivalent to BufRead::read_line
. Read moreSource§impl<R> AsyncReadExt for R
impl<R> AsyncReadExt for R
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,
Source§fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
Source§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,
buf
. Read moreSource§fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
Source§fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
Source§fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
Source§fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
Source§fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
Source§fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
Source§fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
Source§fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
Source§fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
Source§fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
Source§fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
Source§fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
Source§fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
Source§fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
Source§fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
Source§fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
Source§fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
Source§fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
Source§fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
Source§fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
Source§fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
Source§fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
Source§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,
buf
. Read moreSource§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>
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,
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,
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,
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,
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,
AsyncRead
. Read more