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:
tokiotokio::io::AsyncBufRead(required fortokio::io::AsyncReadandtokio::io::AsyncBufReadimpls)- (Optional)
tokio::io::AsyncSeek(used when calling.seekable())
futuresfutures::AsyncBufRead(required forfutures::AsyncReadandfutures::AsyncBufReadimpls)- (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