async_compression/codec/zlib/
encoder.rs

1use crate::{codec::Encode, util::PartialBuffer};
2use std::io::Result;
3
4use flate2::Compression;
5
6#[derive(Debug)]
7pub struct ZlibEncoder {
8    inner: crate::codec::FlateEncoder,
9}
10
11impl ZlibEncoder {
12    pub(crate) fn new(level: Compression) -> Self {
13        Self {
14            inner: crate::codec::FlateEncoder::new(level, true),
15        }
16    }
17
18    pub(crate) fn get_ref(&self) -> &crate::codec::FlateEncoder {
19        &self.inner
20    }
21}
22
23impl Encode for ZlibEncoder {
24    fn encode(
25        &mut self,
26        input: &mut PartialBuffer<impl AsRef<[u8]>>,
27        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
28    ) -> Result<()> {
29        self.inner.encode(input, output)
30    }
31
32    fn flush(
33        &mut self,
34        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
35    ) -> Result<bool> {
36        self.inner.flush(output)
37    }
38
39    fn finish(
40        &mut self,
41        output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
42    ) -> Result<bool> {
43        self.inner.finish(output)
44    }
45}