From 8878eb3b3c3eea42de473a057ab293dc70ba142d Mon Sep 17 00:00:00 2001 From: lifning <> Date: Thu, 14 Jan 2021 01:01:47 -0800 Subject: [PATCH] change ownership for efficiency gains --- examples/onear.rs | 4 ++-- src/one/mod.rs | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/onear.rs b/examples/onear.rs index 62b788c..839597c 100644 --- a/examples/onear.rs +++ b/examples/onear.rs @@ -12,8 +12,8 @@ fn main() -> Result<(), Box> { let args: Vec = env::args().collect(); for arg in &args[1..] { let mut infile = File::open(arg)?; - let mut archive: JodOne = infile.read_le()?; - let entries = archive.extract(); + let archive: JodOne = infile.read_le()?; + let entries = archive.unpack(); let dir = PathBuf::from(format!("{}.d", arg)); for (name, data) in entries { let full_path = dir.join(name); diff --git a/src/one/mod.rs b/src/one/mod.rs index 424a50b..6374b46 100644 --- a/src/one/mod.rs +++ b/src/one/mod.rs @@ -40,16 +40,16 @@ impl std::fmt::Debug for JodOneEntry { } impl JodOne { - pub fn extract(&mut self) -> BTreeMap> { + pub fn unpack(self) -> BTreeMap> { let mut map = BTreeMap::new(); - for entry in &self.entries { + for entry in self.entries { debug!("{:?}", entry); - let os_string = OsString::from_vec(entry.name.0.iter() - .map(|c| if char::from(*c) == '\\' { std::path::MAIN_SEPARATOR as u8 } else { *c }) + let os_string = OsString::from_vec(entry.name.0.into_iter() + .map(|c| if char::from(c) == '\\' { std::path::MAIN_SEPARATOR as u8 } else { c }) .collect()); let key = PathBuf::from(os_string); if entry.size_dec == 0 { - map.insert(key, entry.data.clone()); + map.insert(key, entry.data.into_inner()); } else { // TODO: improve prs crate to use size_dec hint? let dec_buf = prs::decompress::Decompressor::new(&*entry.data).decompress();