aboutsummaryrefslogtreecommitdiff
path: root/src/driver/driver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver/driver.rs')
-rw-r--r--src/driver/driver.rs25
1 files changed, 25 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}