(&self, input: &[u8], output: &mut [u8])
| 28 | |
| 29 | impl Decoder for ZlibDecoder { |
| 30 | fn decode(&self, input: &[u8], output: &mut [u8]) -> Result<usize> { |
| 31 | use flate2::{Decompress, FlushDecompress, Status}; |
| 32 | |
| 33 | let mut decompressor = Decompress::new(false); |
| 34 | let status = decompressor |
| 35 | .decompress(input, output, FlushDecompress::Finish) |
| 36 | .map_err(Error::ZlibDecompress)?; |
| 37 | if status == Status::StreamEnd { |
| 38 | Ok(decompressor.total_out() as usize) |
| 39 | } else { |
| 40 | Err(Error::ZlibUnexpectedStatus(status)) |
| 41 | } |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | #[derive(Default)] |