compression_codecs/
lib.rs1#![cfg_attr(docsrs, feature(doc_auto_cfg, doc_cfg))]
4
5use std::io::Result;
6
7#[cfg(feature = "brotli")]
8pub mod brotli;
9#[cfg(feature = "bzip2")]
10pub mod bzip2;
11#[cfg(feature = "deflate")]
12pub mod deflate;
13#[cfg(feature = "deflate64")]
14pub mod deflate64;
15#[cfg(feature = "flate2")]
16pub mod flate;
17#[cfg(feature = "gzip")]
18pub mod gzip;
19#[cfg(feature = "lz4")]
20pub mod lz4;
21#[cfg(feature = "lzma")]
22pub mod lzma;
23#[cfg(feature = "xz")]
24pub mod xz;
25#[cfg(feature = "lzma")]
26pub mod xz2;
27#[cfg(feature = "zlib")]
28pub mod zlib;
29#[cfg(feature = "zstd")]
30pub mod zstd;
31
32use compression_core::util::PartialBuffer;
33
34#[cfg(feature = "brotli")]
35pub use self::brotli::{BrotliDecoder, BrotliEncoder};
36#[cfg(feature = "bzip2")]
37pub use self::bzip2::{BzDecoder, BzEncoder};
38#[cfg(feature = "deflate")]
39pub use self::deflate::{DeflateDecoder, DeflateEncoder};
40#[cfg(feature = "deflate64")]
41pub use self::deflate64::Deflate64Decoder;
42#[cfg(feature = "flate2")]
43pub use self::flate::{FlateDecoder, FlateEncoder};
44#[cfg(feature = "gzip")]
45pub use self::gzip::{GzipDecoder, GzipEncoder};
46#[cfg(feature = "lz4")]
47pub use self::lz4::{Lz4Decoder, Lz4Encoder};
48#[cfg(feature = "lzma")]
49pub use self::lzma::{LzmaDecoder, LzmaEncoder};
50#[cfg(feature = "xz")]
51pub use self::xz::{XzDecoder, XzEncoder};
52#[cfg(feature = "lzma")]
53pub use self::xz2::{Xz2Decoder, Xz2Encoder, Xz2FileFormat};
54#[cfg(feature = "zlib")]
55pub use self::zlib::{ZlibDecoder, ZlibEncoder};
56#[cfg(feature = "zstd")]
57pub use self::zstd::{ZstdDecoder, ZstdEncoder};
58
59pub trait Encode {
60 fn encode(
61 &mut self,
62 input: &mut PartialBuffer<impl AsRef<[u8]>>,
63 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
64 ) -> Result<()>;
65
66 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
68 -> Result<bool>;
69
70 fn finish(
72 &mut self,
73 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
74 ) -> Result<bool>;
75}
76
77pub trait Decode {
78 fn reinit(&mut self) -> Result<()>;
80
81 fn decode(
83 &mut self,
84 input: &mut PartialBuffer<impl AsRef<[u8]>>,
85 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
86 ) -> Result<bool>;
87
88 fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
90 -> Result<bool>;
91
92 fn finish(
94 &mut self,
95 output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
96 ) -> Result<bool>;
97}