aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-06-15 03:30:50 +0900
committerIgor Tolmachev <me@igorek.dev>2024-06-23 15:34:34 +0900
commitf8c3c93824645a807d28b760855b4676ea479720 (patch)
tree1f91838c2abcb3b0683a061f892b8e2835be4fa1 /src/error.rs
parentbd77f62e99a5300dfa52aef3a7040414b28ebfd6 (diff)
downloadarchivator-f8c3c93824645a807d28b760855b4676ea479720.tar.gz
archivator-f8c3c93824645a807d28b760855b4676ea479720.zip
Add simple zip reader
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 0000000..6d7aba4
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,35 @@
1use std::error::Error;
2use std::fmt::Display;
3use std::io;
4
5pub type ArchiveResult<R, E> = Result<R, ArchiveError<E>>;
6
7#[derive(Debug)]
8pub enum ArchiveError<E: Error> {
9 IO(io::Error),
10 Driver { name: &'static str, error: E },
11}
12
13impl<E: Error> From<io::Error> for ArchiveError<E> {
14 fn from(value: io::Error) -> Self {
15 Self::IO(value)
16 }
17}
18
19impl<E: Error> Display for ArchiveError<E> {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 match self {
22 ArchiveError::IO(error) => write!(f, "{error}"),
23 ArchiveError::Driver { name, error } => write!(f, "{name}: {error}"),
24 }
25 }
26}
27
28impl<E: Error> Error for ArchiveError<E> {
29 fn source(&self) -> Option<&(dyn Error + 'static)> {
30 match self {
31 Self::IO(error) => Some(error),
32 _ => None,
33 }
34 }
35}