Skip to main content

async_compression_issue_150_workaround/codec/deflate/
encoder.rs

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