diff --git a/src/cli.rs b/src/cli.rs index 43308923d..67b9dca09 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -385,7 +385,7 @@ mod test { assert_eq!( config, - CliOptions::parse_from(&[ + CliOptions::parse_from([ "onefetch", "/tmp/folder", "--number-of-authors", @@ -406,22 +406,22 @@ mod test { #[test] fn test_config_with_image_protocol_but_no_image() { - assert!(CliOptions::try_parse_from(&["onefetch", "--image-protocol", "sixel"]).is_err()) + assert!(CliOptions::try_parse_from(["onefetch", "--image-protocol", "sixel"]).is_err()) } #[test] fn test_config_with_color_resolution_but_no_image() { - assert!(CliOptions::try_parse_from(&["onefetch", "--color-resolution", "32"]).is_err()) + assert!(CliOptions::try_parse_from(["onefetch", "--color-resolution", "32"]).is_err()) } #[test] fn test_config_with_ascii_colors_but_out_of_bounds() { - assert!(CliOptions::try_parse_from(&["onefetch", "--ascii-colors", "17"]).is_err()) + assert!(CliOptions::try_parse_from(["onefetch", "--ascii-colors", "17"]).is_err()) } #[test] fn test_config_with_text_colors_but_out_of_bounds() { - assert!(CliOptions::try_parse_from(&["onefetch", "--text-colors", "17"]).is_err()) + assert!(CliOptions::try_parse_from(["onefetch", "--text-colors", "17"]).is_err()) } } diff --git a/src/info/git/mod.rs b/src/info/git/mod.rs index 7b2c8b42b..9b0fb9c68 100644 --- a/src/info/git/mod.rs +++ b/src/info/git/mod.rs @@ -117,13 +117,15 @@ pub fn traverse_commit_graph(repo: &gix::Repository, options: &CliOptions) -> Re Ok(git_metrics) } +type NumberOfCommitsBySignature = HashMap; + fn get_author_channel( repo: &gix::Repository, num_threads: usize, bot_regex_pattern: &Option, mailmap: &gix::mailmap::Snapshot, ) -> ( - Vec>>>, + Vec>>, crossbeam_channel::Sender, ) { // we intentionally over-allocate threads a little as the main thread won't be very busy anyway @@ -140,7 +142,7 @@ fn get_author_channel( let bot_regex_pattern = bot_regex_pattern.clone(); let rx = rx.clone(); move || -> anyhow::Result<_> { - let mut number_of_commits_by_signature: HashMap = HashMap::new(); + let mut number_of_commits_by_signature = NumberOfCommitsBySignature::new(); // We are sure to see each object only once. repo.object_cache_size(0); while let Ok(commit_id) = rx.recv() { @@ -160,22 +162,22 @@ fn get_author_channel( (threads, tx) } +type NumberOfCommitsByFilepath = HashMap; +type ChurnPair = (NumberOfCommitsByFilepath, usize); + fn get_churn_channel( repo: &gix::Repository, has_commit_graph_traversal_ended: &Arc, total_number_of_commits: &Arc, churn_pool_size_opt: Option, -) -> Result<( - JoinHandle, usize)>>, - Sender, -)> { +) -> Result<(JoinHandle>, Sender)> { let (tx, rx) = channel::(); let thread = std::thread::spawn({ let repo = repo.clone(); let has_commit_graph_traversal_ended = has_commit_graph_traversal_ended.clone(); let total_number_of_commits = total_number_of_commits.clone(); move || -> Result<_> { - let mut number_of_commits_by_file_path: HashMap = HashMap::new(); + let mut number_of_commits_by_file_path = NumberOfCommitsByFilepath::new(); let mut number_of_diffs_computed = 0; while let Ok(commit_id) = rx.recv() { let commit = repo.find_object(commit_id)?.into_commit();