snes_compress/
errors.rs

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}