From f02a44964a2fdb91d62dee9c55f6d03648f985cb Mon Sep 17 00:00:00 2001 From: Igor Tolmachov Date: Tue, 29 Aug 2023 20:24:44 +0900 Subject: Add zip stubs --- src/zip/archive.rs | 0 src/zip/file.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/zip/io.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/zip/mod.rs | 5 +++++ 4 files changed, 99 insertions(+) create mode 100644 src/zip/archive.rs create mode 100644 src/zip/file.rs create mode 100644 src/zip/io.rs create mode 100644 src/zip/mod.rs (limited to 'src/zip') diff --git a/src/zip/archive.rs b/src/zip/archive.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/zip/file.rs b/src/zip/file.rs new file mode 100644 index 0000000..dba8d06 --- /dev/null +++ b/src/zip/file.rs @@ -0,0 +1,44 @@ +use crate::file::{ArchiveFile, ArchiveFileRead, ArchiveFileWrite}; +use std::io::{Read, Write}; + +pub struct FileInfo {} + +pub struct FileReader {} + +pub struct FileWriter {} + +impl ArchiveFile for FileReader { + type Info = FileInfo; + + fn info() -> Self::Info { + Self::Info {} + } +} + +impl Read for FileReader { + fn read(&mut self, buf: &mut [u8]) -> std::io::Result { + return Ok(0); + } +} + +impl ArchiveFileRead for FileReader {} + +impl ArchiveFile for FileWriter { + type Info = FileInfo; + + fn info() -> Self::Info { + Self::Info {} + } +} + +impl Write for FileWriter { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + return Ok(0); + } + + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } +} + +impl ArchiveFileWrite for FileWriter {} diff --git a/src/zip/io.rs b/src/zip/io.rs new file mode 100644 index 0000000..b79ad0d --- /dev/null +++ b/src/zip/io.rs @@ -0,0 +1,50 @@ +use super::file::{FileInfo, FileReader, FileWriter}; +use crate::io::{ArchiveRead, ArchiveWrite}; +use crate::result::ArchiveResult; +use std::fs::File; +use std::io::Read; +use std::io::{Seek, Write}; + +pub struct Reader { + reader: R, +} + +impl ArchiveRead for Reader { + type Reader = R; + type FileInfo = FileInfo; + type FileReader = FileReader; + + fn new(reader: Self::Reader) -> ArchiveResult { + Ok(Self { reader }) + } + + fn files(&self) -> ArchiveResult> { + Ok(Vec::new()) + } + + fn file_reader(&self, name: &str) -> ArchiveResult { + Ok(Self::FileReader {}) + } +} + +impl Reader {} + +pub struct Writer { + writer: W, +} + +impl ArchiveWrite for Writer { + type Writer = W; + type FileInfo = FileInfo; + type FileWriter = FileWriter; + + fn new(writer: Self::Writer) -> ArchiveResult { + Ok(Self { writer }) + } + + fn file_writer(&self, name: &str) -> ArchiveResult { + Ok(Self::FileWriter {}) + } +} + +impl Writer {} diff --git a/src/zip/mod.rs b/src/zip/mod.rs new file mode 100644 index 0000000..5241c87 --- /dev/null +++ b/src/zip/mod.rs @@ -0,0 +1,5 @@ +mod archive; +mod file; +mod io; + +pub use io::{Reader, Writer}; -- cgit v1.3