1use thiserror::Error;
2
3#[derive(Debug, PartialEq)]
4pub struct DecompressionErrorInfo {
5 source: Vec<u8>,
6 result: Vec<u8>,
7}
8
9impl DecompressionErrorInfo {
10 pub fn new(source: &[u8], result: &[u8]) -> Self {
11 DecompressionErrorInfo {
12 source: source.to_owned(),
13 result: result.to_owned(),
14 }
15 }
16}
17
18#[derive(Debug, PartialEq)]
19pub enum DecompressionErrorKind {
20 UnsupportedFormat,
21 InvalidCommand,
22 IndexOutOfBounds,
23}
24
25#[derive(Error, Debug, PartialEq)]
26#[error("Decompression Error")]
27pub struct DecompressionError {
28 error_info: DecompressionErrorInfo,
29 kind: DecompressionErrorKind,
30}
31
32impl DecompressionError {
33 pub fn new(kind: DecompressionErrorKind, error_info: DecompressionErrorInfo) -> Self {
34 DecompressionError { error_info, kind }
35 }
36}
37
38#[derive(Error, Debug, PartialEq)]
39pub enum CompressionError {
40 #[error("Compression type \"{compression_type}\" is not supported.")]
41 UnsupportedFormat { compression_type: String },
42 #[error("Compression failed. All data SHOULD be compressible for any format. This is a problem with the library.")]
43 CompressionFailed,
44}