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}