kafka_protocol/
compression.rs1use crate::protocol::buf::{ByteBuf, ByteBufMut};
7use anyhow::Result;
8
9#[cfg(feature = "gzip")]
10mod gzip;
11#[cfg(feature = "lz4")]
12mod lz4;
13mod none;
14#[cfg(feature = "snappy")]
15mod snappy;
16#[cfg(feature = "zstd")]
17mod zstd;
18
19#[cfg(feature = "gzip")]
20pub use gzip::Gzip;
21#[cfg(feature = "lz4")]
22pub use lz4::Lz4;
23pub use none::None;
24#[cfg(feature = "snappy")]
25pub use snappy::Snappy;
26#[cfg(feature = "zstd")]
27pub use zstd::Zstd;
28
29pub trait Compressor<B: ByteBufMut> {
31 type BufMut: ByteBufMut;
33 fn compress<R, F>(buf: &mut B, f: F) -> Result<R>
35 where
36 F: FnOnce(&mut Self::BufMut) -> Result<R>;
37}
38
39pub trait Decompressor<B: ByteBuf> {
41 type Buf: ByteBuf;
43 fn decompress<R, F>(buf: &mut B, f: F) -> Result<R>
45 where
46 F: FnOnce(&mut Self::Buf) -> Result<R>;
47}