kona_comp/
types.rs

1//! Compression types.
2
3/// The result from compressing data.
4pub type CompressorResult<T> = Result<T, CompressorError>;
5
6/// An error returned by the compressor.
7#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
8pub enum CompressorError {
9    /// Thrown when the compressor is full.
10    #[error("compressor is full")]
11    Full,
12    /// Brotli compression failed.
13    #[error("brotli compression failed")]
14    Brotli,
15}
16
17/// The type of compressor to use.
18///
19/// See: <https://github.com/ethereum-optimism/optimism/blob/042433b89ce38ccc15456e9673829f6783bb97ac/op-batcher/compressor/compressors.go#L20>
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum CompressorType {
22    /// The ratio compression.
23    Ratio,
24    /// The shadow compression.
25    Shadow,
26}
27
28/// The compression algorithm type.
29///
30/// See:
31#[derive(Debug, Clone, Copy, PartialEq, Eq)]
32pub enum CompressionAlgo {
33    /// The fastest brotli compression level.
34    Brotli9,
35    /// The default brotli compression level.
36    Brotli10,
37    /// The best brotli compression level.
38    Brotli11,
39    /// The zlib compression.
40    Zlib,
41}
42
43#[cfg(feature = "std")]
44impl<A: alloc::borrow::Borrow<CompressionAlgo>> From<A> for crate::BrotliLevel {
45    fn from(algo: A) -> Self {
46        match algo.borrow() {
47            CompressionAlgo::Brotli9 => Self::Brotli9,
48            CompressionAlgo::Brotli11 => Self::Brotli11,
49            _ => Self::Brotli10,
50        }
51    }
52}