From 0244a1ade3e3bf4b17720846676268120b6e6320 Mon Sep 17 00:00:00 2001 From: markxoe Date: Mon, 3 Jun 2024 21:20:06 +0200 Subject: [PATCH] wip: minor improvements --- src/commands/interactive.rs | 4 ++-- src/data/maps/link_map.rs | 11 +++++++---- src/data/parsers/common.rs | 5 +---- src/data/parsers/links.rs | 4 +--- src/indication.rs | 16 +++++----------- 5 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/commands/interactive.rs b/src/commands/interactive.rs index ccd8177..4ce7190 100644 --- a/src/commands/interactive.rs +++ b/src/commands/interactive.rs @@ -42,14 +42,14 @@ If you want to exit press ctrl+d or ctrl+c\n" let links = data.links; let lookup = data.pages; - fn page_input_loop<'a>(prompt: &str, pages: &'a PageMap) -> Option { + fn page_input_loop(prompt: &str, pages: &PageMap) -> Option { loop { let input = inquire::Text::new(prompt).prompt(); if input.is_err() { return None; } - let input = input.unwrap().replace(" ", "_"); + let input = input.unwrap().replace(' ', "_"); let page = pages.resolve_by_title(&input); if page.is_none() { println!("Page not found"); diff --git a/src/data/maps/link_map.rs b/src/data/maps/link_map.rs index e12f65e..3f51cb1 100644 --- a/src/data/maps/link_map.rs +++ b/src/data/maps/link_map.rs @@ -29,10 +29,13 @@ impl LinkMap { }; while let Some((from, to)) = links.pop_front() { - if map.contains_key(&from) { - map.get_mut(&from).unwrap().push(to); - } else { - map.insert(from, vec![to]); + match map.entry(from) { + std::collections::hash_map::Entry::Vacant(e) => { + e.insert(vec![to]); + } + std::collections::hash_map::Entry::Occupied(mut e) => { + e.get_mut().push(to); + } } links_counter += 1; diff --git a/src/data/parsers/common.rs b/src/data/parsers/common.rs index 3f98ddc..7937139 100644 --- a/src/data/parsers/common.rs +++ b/src/data/parsers/common.rs @@ -42,16 +42,13 @@ where let file_ptr = File::open(file).expect("Unable to open file"); let reader = BufReader::new(file_ptr); - let mut i = 0; - - for line in reader.lines().into_iter() { + for (i, line) in reader.lines().enumerate() { let line = line.unwrap(); tx.send(line).expect("Error sending line"); if i % 100 == 0 { debug!("Read {} lines", i); } - i += 1; } }); diff --git a/src/data/parsers/links.rs b/src/data/parsers/links.rs index 86f963f..4ada6e4 100644 --- a/src/data/parsers/links.rs +++ b/src/data/parsers/links.rs @@ -40,9 +40,7 @@ pub fn read_and_parse_links2( // note: namespace is fixed in regex to 0 (main namespace) let re = Regex::new(r"\(([0-9]+),0,'([^']+)',0,[0-9]*\)").expect("Invalid regex"); - let progress = progress - .with_len(common::get_file_line_count(&file)) - .build(); + let progress = progress.with_len(common::get_file_line_count(file)).build(); let out = common::parse_file_async( file.to_string(), diff --git a/src/indication.rs b/src/indication.rs index 1ef589d..9dae94a 100644 --- a/src/indication.rs +++ b/src/indication.rs @@ -60,7 +60,7 @@ impl ProgressReporter { finish_message: Option<&'static str>, steps: Option<(u8, u8)>, ) -> Self { - let progress = spinner(if let Some(_) = steps { true } else { false }); + let progress = spinner(steps.is_some()); progress.set_message(message.clone()); if let Some((step, steps)) = steps { @@ -177,7 +177,7 @@ impl ProgressBuilder { } fn build_progress(self) -> ProgressReporter { - let len = self.len.unwrap() as u64; + let len = self.len.unwrap(); let message = self.message.unwrap(); let steps = self.steps.unwrap(); let step = self.step.unwrap(); @@ -191,15 +191,9 @@ impl ProgressBuilder { let message = self.message.unwrap(); let finish_message = self.finish_message; - let steps = if let Some(steps) = self.steps { - if let Some(step) = self.step { - Some((step, steps)) - } else { - None - } - } else { - None - }; + let steps = self + .steps + .map(|steps| (steps, self.step.expect("only steps given, no step"))); ProgressReporter::new_spinner(message, finish_message, steps) }