From f7fa6860578b1373c142e0ba37793edffb70254a Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 13 Sep 2022 11:49:44 +0300 Subject: [PATCH] ZipArchive reuse --- src/main.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9b96171..830104e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,7 +42,10 @@ fn write_file( Ok(()) } -fn process_files(files: &[PathBuf]) -> Result<(), Box> { +fn process_files( + archive: &mut zip::ZipArchive, + files: &[PathBuf], +) -> Result<(), Box> { if files.is_empty() { return Ok(()); } @@ -59,10 +62,6 @@ fn process_files(files: &[PathBuf]) -> Result<(), Box> { trap: EncoderTrap::Ignore, }; - let zip_file = fs::File::open(INPUT_FILENAME)?; - let zip_reader = io::BufReader::new(zip_file); - let mut archive = zip::ZipArchive::new(zip_reader)?; - let mut outfile = fs::File::create(OUTPUT_FILENAME)?; let mut zip_writer = ZipWriter::new(&mut outfile); @@ -105,14 +104,13 @@ fn main() -> Result<(), Box> { } }) .collect(); - drop(archive); println!("processing {} files...", source_files.len()); source_files.sort(); let source_files = source_files; - process_files(&source_files)?; + process_files(&mut archive, &source_files)?; println!("done"); Ok(())