blackhole_compress/
error.rs1use std::{fmt, error, io};
2
3#[derive(Debug)]
4pub enum ReadError {
5 InvalidState(String),
6 IOError(io::Error),
7 UnexpectedEofError,
8 InvalidArgumentError(String)
9}
10impl fmt::Display for ReadError {
11 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12 match *self {
13 ReadError::InvalidState(ref s) => write!(f, "Invalid State. ({})", s),
14 ReadError::IOError(ref e) => write!(f, "{}", e),
15 ReadError::UnexpectedEofError => write!(f, "Unexpected EOF."),
16 ReadError::InvalidArgumentError(ref s) => write!(f, "InvalidArgumentError ({})", s)
17 }
18 }
19}
20impl error::Error for ReadError {
21 fn description(&self) -> &str {
22 match *self {
23 ReadError::InvalidState(_) => "Invalid State.",
24 ReadError::IOError(_) => "IO Error.",
25 ReadError::UnexpectedEofError => "UnexpectedEOF.",
26 ReadError::InvalidArgumentError(_) => "Invalid argument."
27 }
28 }
29
30 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
31 match *self {
32 ReadError::InvalidState(_) => None,
33 ReadError::IOError(ref e) => Some(e),
34 ReadError::UnexpectedEofError => None,
35 ReadError::InvalidArgumentError(_) => None
36 }
37 }
38}
39impl From<io::Error> for ReadError {
40 fn from(e: io::Error) -> Self {
41 ReadError::IOError(e)
42 }
43}
44#[derive(Debug)]
45pub enum WriteError {
46 InvalidState(String),
47 IOError(io::Error),
48}
49impl fmt::Display for WriteError {
50 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
51 match *self {
52 WriteError::InvalidState(ref s) => write!(f, "Invalid State. ({})", s),
53 WriteError::IOError(ref e) => write!(f, "{}", e),
54 }
55 }
56}
57impl error::Error for WriteError {
58 fn description(&self) -> &str {
59 match *self {
60 WriteError::InvalidState(_) => "Invalid State.",
61 WriteError::IOError(_) => "IO Error.",
62 }
63 }
64
65 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
66 match *self {
67 WriteError::InvalidState(_) => None,
68 WriteError::IOError(ref e) => Some(e),
69 }
70 }
71}
72impl From<io::Error> for WriteError {
73 fn from(e: io::Error) -> Self {
74 WriteError::IOError(e)
75 }
76}
77#[derive(Debug)]
78pub enum CompressionError {
79 InvalidState(String),
80 ReadError(ReadError),
81 WriteError(WriteError),
82 LimitError(String)
83}
84impl fmt::Display for CompressionError {
85 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
86 match *self {
87 CompressionError::InvalidState(ref s) => write!(f, "Invalid State. ({})", s),
88 CompressionError::ReadError(ref e) => write!(f, "Read error ({})", e),
89 CompressionError::WriteError(ref e) => write!(f, "Write error ({})", e),
90 CompressionError::LimitError(ref s) => write!(f, "limit error. ({})", s)
91 }
92 }
93}
94impl error::Error for CompressionError {
95 fn description(&self) -> &str {
96 match *self {
97 CompressionError::InvalidState(_) => "Invalid State.",
98 CompressionError::ReadError(_) => "Read error.",
99 CompressionError::WriteError(_) => "Write error.",
100 CompressionError::LimitError(_) => "limit error.",
101 }
102 }
103
104 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
105 match *self {
106 CompressionError::InvalidState(_) => None,
107 CompressionError::ReadError(ref e) => Some(e),
108 CompressionError::WriteError(ref e) => Some(e),
109 CompressionError::LimitError(_) => None
110 }
111 }
112}
113impl From<ReadError> for CompressionError {
114 fn from(e: ReadError) -> Self {
115 CompressionError::ReadError(e)
116 }
117}
118impl From<WriteError> for CompressionError {
119 fn from(e: WriteError) -> Self {
120 CompressionError::WriteError(e)
121 }
122}
123#[derive(Debug)]
124pub enum UnCompressionError {
125 InvalidState(String),
126 ReadError(ReadError),
127 WriteError(WriteError),
128 FormatError
129}
130impl fmt::Display for UnCompressionError {
131 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
132 match *self {
133 UnCompressionError::InvalidState(ref s) => write!(f, "Invalid State. ({})", s),
134 UnCompressionError::ReadError(ref e) => write!(f, "Read error ({})", e),
135 UnCompressionError::WriteError(ref e) => write!(f, "Write error ({})", e),
136 UnCompressionError::FormatError => write!(f, "The format of the input is invalid.")
137 }
138 }
139}
140impl error::Error for UnCompressionError {
141 fn description(&self) -> &str {
142 match *self {
143 UnCompressionError::InvalidState(_) => "Invalid State.",
144 UnCompressionError::ReadError(_) => "Read error.",
145 UnCompressionError::WriteError(_) => "Write error.",
146 UnCompressionError::FormatError => "The format of the input is invalid."
147 }
148 }
149
150 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
151 match *self {
152 UnCompressionError::InvalidState(_) => None,
153 UnCompressionError::ReadError(ref e) => Some(e),
154 UnCompressionError::WriteError(ref e) => Some(e),
155 UnCompressionError::FormatError => None
156 }
157 }
158}
159impl From<ReadError> for UnCompressionError {
160 fn from(e: ReadError) -> Self {
161 UnCompressionError::ReadError(e)
162 }
163}
164impl From<WriteError> for UnCompressionError {
165 fn from(e: WriteError) -> Self {
166 UnCompressionError::WriteError(e)
167 }
168}