diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/src/main.rs b/src/main.rs index f0fd9ae..76d4568 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,27 +21,9 @@ fn count_words(reader: &mut io::BufReader<File>) -> io::Result<WordCounts> { let mut counts = WordCounts::new(); for line in reader.lines() { let line = line?; - add_counts(&mut counts, &count_words_in_line(&line)); - } - Ok(counts) -} - - -fn count_words_in_line(line: &str) -> WordCounts { - let mut counts = WordCounts::new(); - let mut word = String::new(); - for c in line.chars() { - if c.is_alphabetic() { - word.push(c); - } else { - if !word.is_empty() { - count(&mut counts, word.clone()); - word.clear(); - } + for w in line.split(|c: char| !c.is_alphabetic()).filter(|w| !w.is_empty()) { + count(&mut counts, w.to_lowercase().clone()); } } - if !word.is_empty() { - count(&mut counts, word.clone()); - } - counts + Ok(counts) } |