pub enum CompressionWriter {
Plain(BufWriter<File>),
Gzip(GzEncoder<File>),
Zlib(ZlibEncoder<File>),
Zstd(Encoder<'static, File>),
Brotli(CompressorWriter<File>),
}Expand description
A writer that handles optional compression transparently.
Wraps different compression encoders behind a unified interface
that implements Write and provides a finish() method for cleanup.
§Example
use json_archive::compression_writer::CompressionWriter;
use json_archive::detection::CompressionFormat;
use std::io::Write;
let mut writer = CompressionWriter::create(path, CompressionFormat::Gzip)?;
writeln!(writer, "some data")?;
writer.finish()?;Variants§
Plain(BufWriter<File>)
Uncompressed output - uses BufWriter since File has no internal buffering
Gzip(GzEncoder<File>)
Compression encoders write directly to File - they do their own internal buffering
Zlib(ZlibEncoder<File>)
Zstd(Encoder<'static, File>)
Brotli(CompressorWriter<File>)
Implementations§
Source§impl CompressionWriter
impl CompressionWriter
Sourcepub fn create(
path: &Path,
format: CompressionFormat,
) -> Result<Self, Vec<Diagnostic>>
pub fn create( path: &Path, format: CompressionFormat, ) -> Result<Self, Vec<Diagnostic>>
Open a file for writing with the specified compression format.
§Errors
Returns a diagnostic explaining:
- What file we tried to create
- What compression format was requested
- Why it failed (permissions, disk full, unsupported format, etc.)
Sourcepub fn finish(self) -> Result<(), Vec<Diagnostic>>
pub fn finish(self) -> Result<(), Vec<Diagnostic>>
Finish writing and flush all buffers.
For compressed formats, this finalizes the compression stream. Must be called before dropping to ensure all data is written.
§Errors
Returns a diagnostic if flushing or finalizing fails.
Important: This method does not clean up the output file on error.
If finish() fails, the caller is responsible for removing the
partially-written file themselves:
if let Err(diagnostics) = writer.finish() {
let _ = std::fs::remove_file(&path);
return Err(diagnostics);
}Trait Implementations§
Source§impl Write for CompressionWriter
impl Write for CompressionWriter
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored)