//[dependencies]
//zip = "0.6.4"
use zip::result::ZipResult;
use zip::ZipArchive;
use std::fs::File;
use std::fs;
use std::io::prelude::*;
fn main() -> ZipResult<()> {
let zip_file = "tmp/data.zip";
let file = File::open(zip_file)?;
let mut zip = ZipArchive::new(file)?;
for i in 0..zip.len() {
let mut file = zip.by_index(i)?;
let file_path = "tmp/".to_owned() + file.name();
if file.is_dir() {
fs::create_dir_all(file_path)?;
} else {
let mut writer: Vec<u8> = vec![];
std::io::copy(&mut file, &mut writer)?;
let mut file_to = File::create(file_path)?;
file_to.write_all(&writer)?;
}
}
Ok(())
}