aboutsummaryrefslogtreecommitdiff
path: root/src/driver
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/driver
parentbd77f62e99a5300dfa52aef3a7040414b28ebfd6 (diff)
downloadarchivator-f8c3c93824645a807d28b760855b4676ea479720.tar.gz
archivator-f8c3c93824645a807d28b760855b4676ea479720.zip
Add simple zip reader
Diffstat (limited to 'src/driver')
-rw-r--r--src/driver/driver.rs25
-rw-r--r--src/driver/file.rs1
-rw-r--r--src/driver/mod.rs5
3 files changed, 31 insertions, 0 deletions
diff --git a/src/driver/driver.rs b/src/driver/driver.rs
new file mode 100644
index 0000000..3a8ed16
--- /dev/null
+++ b/src/driver/driver.rs
@@ -0,0 +1,25 @@
1use crate::driver::ArchiveFile;
2use crate::ArchiveResult;
3use std::error::Error;
4use std::io::{Read, Write};
5
6pub trait Driver: Sized {
7 type Error: Error;
8
9 type IO;
10 type File: ArchiveFile;
11}
12
13pub trait ArchiveRead: Driver
14where
15 Self::IO: Read,
16{
17 // Create driver instance
18 fn read(io: Self::IO) -> ArchiveResult<Self, Self::Error>;
19}
20
21pub trait ArchiveWrite: ArchiveRead
22where
23 Self::IO: Read + Write,
24{
25}
diff --git a/src/driver/file.rs b/src/driver/file.rs
new file mode 100644
index 0000000..a4974f3
--- /dev/null
+++ b/src/driver/file.rs
@@ -0,0 +1 @@
pub trait ArchiveFile {}
diff --git a/src/driver/mod.rs b/src/driver/mod.rs
new file mode 100644
index 0000000..36ee6b5
--- /dev/null
+++ b/src/driver/mod.rs
@@ -0,0 +1,5 @@
1mod driver;
2mod file;
3
4pub use driver::{ArchiveRead, ArchiveWrite, Driver};
5pub use file::ArchiveFile;