From 1b83ee76b298dddc21414b87934c070ff1172b18 Mon Sep 17 00:00:00 2001 From: Peter Tseng Date: Wed, 24 Aug 2016 04:29:31 -0700 Subject: [PATCH] nucleotide-count: Use `Entry#or_insert` In #155, this operation was performed for other exercises (tournament, parallel-letter-frequency, word-count), but nucleotide-count was skipped because #149 indicates that invalid nucleotides maybe should produce errors. We don't need to wait for x-common to get a nucleotide-count.json before deciding to make the current implementation more idiomatic though. If it's eventually decided that `or_insert` doesn't make sense, we can change it then. --- exercises/nucleotide-count/example.rs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/exercises/nucleotide-count/example.rs b/exercises/nucleotide-count/example.rs index f63e4d262..0c389921a 100644 --- a/exercises/nucleotide-count/example.rs +++ b/exercises/nucleotide-count/example.rs @@ -1,5 +1,4 @@ use std::collections::HashMap; -use std::collections::hash_map::Entry; pub fn count(nucleotide: char, input: &str) -> usize { input.chars().filter(|&c| c == nucleotide).count() @@ -8,13 +7,7 @@ pub fn count(nucleotide: char, input: &str) -> usize { pub fn nucleotide_counts(input: &str) -> HashMap { let mut map: HashMap = "ACGT".chars().map(|c| (c, 0)).collect(); for nucleotide in input.chars() { - match map.entry(nucleotide) { - Entry::Vacant(view) => view.insert(1), - Entry::Occupied(mut view) => { - *view.get_mut() += 1; - view.into_mut() - } - }; + *map.entry(nucleotide).or_insert(0) += 1; } map }