From 0c226426ded58ba194fb310184df3494273f937f Mon Sep 17 00:00:00 2001 From: Bloxx12 Date: Sun, 4 May 2025 16:34:12 +0200 Subject: [PATCH] main.rs: overabstract package HashMaps --- src/main.rs | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8e32986..af50418 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,20 +37,21 @@ fn main() { if let (Ok(packages), Ok(packages2)) = (packages, packages2) { // Map from packages of the first closure to their version - let mut pre: HashMap = HashMap::new(); + let pre: HashMap = packages + .into_iter() + .map(|p| { + let (name, version) = get_version(&*p); + (name.to_string(), version.to_string()) + }) + .collect(); - // Map from packages of the second closure to their version - let mut post: HashMap = HashMap::new(); - - for p in &packages { - let version = get_version(p); - pre.insert(version.0.to_string(), version.1.to_string()); - } - - for p in &packages2 { - let version = get_version(p); - post.insert(version.0.to_string(), version.1.to_string()); - } + let post: HashMap = packages2 + .into_iter() + .map(|p| { + let (name, version) = get_version(&*p); + (name.to_string(), version.to_string()) + }) + .collect(); // Compare the package names of both versions let pre_keys: HashSet = pre.clone().into_keys().collect(); @@ -115,12 +116,12 @@ fn get_packages(path: &std::path::Path) -> Result, BlaErr> { Err(BlaErr::LolErr) } -fn get_version(pack: &str) -> (&str, &str) { +fn get_version<'a>(pack: impl Into<&'a str>) -> (&'a str, &'a str) { // funny regex to split a nix store path into its name and its version. let re = Regex::new(r"^/nix/store/[a-z0-9]+-(.+?)-([0-9].*?)$").unwrap(); // No cap frfr - if let Some(cap) = re.captures(pack) { + if let Some(cap) = re.captures(pack.into()) { let name = cap.get(1).unwrap().as_str(); let version = cap.get(2).unwrap().as_str(); return (name, version);