Skip to content

Commit 28019d8

Browse files
committed
wip
1 parent 19b023a commit 28019d8

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/pnp_fs.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use lru::LruCache;
44
use regex::bytes::Regex;
55
use serde::Deserialize;
66
use simple_error::bail;
7-
use zip::ZipArchive;
7+
use zip::{ZipArchive, read::ZipFile};
88
use std::{path::{Path, PathBuf}, os::{unix::prelude::OsStrExt, macos::fs::MetadataExt}, fs, io::{BufReader}, collections::{HashSet, HashMap}};
99

1010
use crate::util;
@@ -34,14 +34,14 @@ pub fn mode_to_file_type(mode: u32) -> FileType {
3434
}
3535

3636

37-
pub struct Zip {
37+
pub struct Zip<'a> {
3838
archive: ZipArchive<BufReader<fs::File>>,
39-
files: HashMap<String, ()>,
39+
files: HashMap<String, ZipFile<'a>>,
4040
dirs: HashSet<String>,
4141
}
4242

43-
impl Zip {
44-
fn new(archive: ZipArchive<BufReader<fs::File>>) -> Result<Zip, Error> {
43+
impl<'a> Zip<'a> {
44+
fn new(archive: ZipArchive<BufReader<fs::File>>) -> Result<Zip<'a>, Error> {
4545
let mut zip = Zip {
4646
archive,
4747
files: Default::default(),
@@ -71,7 +71,7 @@ impl Zip {
7171
if entry.is_dir() {
7272
zip.dirs.insert(name);
7373
} else if entry.is_file() {
74-
zip.files.insert(name, {});
74+
zip.files.insert(name, entry);
7575
}
7676
}
7777

@@ -91,8 +91,8 @@ pub trait ZipCache {
9191
fn act<T, F : FnOnce(&Zip) -> T>(&mut self, p: &Path, cb: F) -> Result<T, &Error>;
9292
}
9393

94-
pub struct LruZipCache {
95-
lru: LruCache<PathBuf, Result<Zip, Error>>,
94+
pub struct LruZipCache<'a> {
95+
lru: LruCache<PathBuf, Result<Zip<'a>, Error>>,
9696
}
9797

9898
pub fn open_zip(p: &Path) -> Result<Zip, Error> {
@@ -105,7 +105,7 @@ pub fn open_zip(p: &Path) -> Result<Zip, Error> {
105105
Ok(zip)
106106
}
107107

108-
impl ZipCache for LruZipCache {
108+
impl<'a> ZipCache for LruZipCache<'a> {
109109
fn act<T, F : FnOnce(&Zip) -> T>(&mut self, p: &Path, cb: F) -> Result<T, &Error> {
110110
let res = self.lru.get_or_insert(p.to_owned(), || {
111111
open_zip(p)

0 commit comments

Comments
 (0)