Coverage Report

Created: 2025-07-23 07:29

/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
}