diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 40 |
1 files changed, 2 insertions, 38 deletions
diff --git a/src/main.rs b/src/main.rs index aef750d..f0fd9ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,9 +2,9 @@ use std::env; use std::fs::File; use std::io; use std::io::BufRead; -use std::collections::HashMap; - +mod counts; +use counts::*; fn main() -> io::Result<()> { for filename in env::args().skip(1) { @@ -45,39 +45,3 @@ fn count_words_in_line(line: &str) -> WordCounts { } counts } - - -type WordCounts = HashMap<String, u32>; - - -fn count(counts: &mut WordCounts, word: String) { - add(counts, word, 1); -} - - -fn add_counts(counts: &mut WordCounts, other: &WordCounts) { - for (word, count) in other.iter() { - add(counts, word.to_string(), *count); - } -} - - -fn add(counts: &mut WordCounts, word: String, count: u32) { - let counter = counts.entry(word).or_insert(0); - *counter += count; -} - -fn print(counts: &WordCounts, max: usize) { - let mut top = Vec::new(); - for (word, count) in counts.iter() { - top.push((count, word)); - if top.len() > max { - top.sort(); - top.reverse(); - top.truncate(max); - } - } - for (count, word) in top.iter() { - println!("{} {}", count, word); - } -} |