pub struct DecodeWriter<W: Write> { /* private fields */ }Available on crate feature
std only.Expand description
Decompresses while writing: compressed data written in comes out plain
in inner.
Bytes after the end of the stream are refused (InvalidData).
finish checks that the stream was complete.
§Examples
use std::io::Write;
use compress_lib::{Format, gzip, io::DecodeWriter};
let mut w = DecodeWriter::new(Vec::new(), Format::Gzip);
w.write_all(&gzip::compress(b"decoded on write"))?;
assert_eq!(w.finish()?, b"decoded on write");Implementations§
Source§impl<W: Write> DecodeWriter<W>
impl<W: Write> DecodeWriter<W>
Sourcepub fn new(inner: W, format: Format) -> Self
pub fn new(inner: W, format: Format) -> Self
Decodes format into inner with the default limits.
§Examples
let w = compress_lib::io::DecodeWriter::new(Vec::new(), compress_lib::Format::Zlib);Sourcepub fn with_limits(self, limits: Limits) -> Self
pub fn with_limits(self, limits: Limits) -> Self
Sets the limits checked while decoding.
§Examples
use compress_lib::{Format, Limits, io::DecodeWriter};
let w = DecodeWriter::new(Vec::new(), Format::Zlib).with_limits(Limits::new().with_max_output(1 << 20));Sourcepub fn finish(self) -> Result<W>
pub fn finish(self) -> Result<W>
Checks that the stream ended and returns the destination.
§Errors
UnexpectedEof when the stream is incomplete; errors of the
destination.
§Examples
use std::io::Write;
use compress_lib::{Format, zlib, io::DecodeWriter};
let packed = zlib::compress(b"whole");
let mut w = DecodeWriter::new(Vec::new(), Format::Zlib);
w.write_all(&packed[..packed.len() - 2])?;
assert_eq!(w.finish().unwrap_err().kind(), std::io::ErrorKind::UnexpectedEof);Trait Implementations§
Source§impl<W: Write> Write for DecodeWriter<W>
impl<W: Write> Write for DecodeWriter<W>
Source§fn write(&mut self, data: &[u8]) -> Result<usize>
fn write(&mut self, data: &[u8]) -> Result<usize>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl<W> Forget for DecodeWriter<W>
impl<W> Freeze for DecodeWriter<W>where
W: Freeze,
impl<W> RefUnwindSafe for DecodeWriter<W>where
W: RefUnwindSafe,
impl<W> Send for DecodeWriter<W>where
W: Send,
impl<W> Sync for DecodeWriter<W>where
W: Sync,
impl<W> Unpin for DecodeWriter<W>where
W: Unpin,
impl<W> UnsafeUnpin for DecodeWriter<W>where
W: UnsafeUnpin,
impl<W> UnwindSafe for DecodeWriter<W>where
W: UnwindSafe,
Blanket Implementations§
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