/rust/registry/src/index.crates.io-6f17d22bba15001f/flate2-1.0.28/src/ffi/mod.rs
Line | Count | Source (jump to first uncovered line) |
1 | | //! This module contains backend-specific code. |
2 | | |
3 | | use crate::mem::{CompressError, DecompressError, FlushCompress, FlushDecompress, Status}; |
4 | | use crate::Compression; |
5 | | |
6 | | /// Traits specifying the interface of the backends. |
7 | | /// |
8 | | /// Sync + Send are added as a condition to ensure they are available |
9 | | /// for the frontend. |
10 | | pub trait Backend: Sync + Send { |
11 | | fn total_in(&self) -> u64; |
12 | | fn total_out(&self) -> u64; |
13 | | } |
14 | | |
15 | | pub trait InflateBackend: Backend { |
16 | | fn make(zlib_header: bool, window_bits: u8) -> Self; |
17 | | fn decompress( |
18 | | &mut self, |
19 | | input: &[u8], |
20 | | output: &mut [u8], |
21 | | flush: FlushDecompress, |
22 | | ) -> Result<Status, DecompressError>; |
23 | | fn reset(&mut self, zlib_header: bool); |
24 | | } |
25 | | |
26 | | pub trait DeflateBackend: Backend { |
27 | | fn make(level: Compression, zlib_header: bool, window_bits: u8) -> Self; |
28 | | fn compress( |
29 | | &mut self, |
30 | | input: &[u8], |
31 | | output: &mut [u8], |
32 | | flush: FlushCompress, |
33 | | ) -> Result<Status, CompressError>; |
34 | | fn reset(&mut self); |
35 | | } |
36 | | |
37 | | // Default to Rust implementation unless explicitly opted in to a different backend. |
38 | | #[cfg(feature = "any_zlib")] |
39 | | mod c; |
40 | | #[cfg(feature = "any_zlib")] |
41 | | pub use self::c::*; |
42 | | |
43 | | #[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))] |
44 | | mod rust; |
45 | | #[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))] |
46 | | pub use self::rust::*; |
47 | | |
48 | | impl std::fmt::Debug for ErrorMessage { |
49 | 0 | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { |
50 | 0 | self.get().fmt(f) |
51 | 0 | } |
52 | | } |