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