use std::env; use std::fs::File; use std::io; use std::io::BufRead; mod counts; use counts::*; fn main() -> io::Result<()> { for filename in env::args().skip(1) { let mut f = File::open(&filename)?; let mut reader = io::BufReader::new(f); let counts = count_words(&mut reader)?; print(&counts, 10) } Ok(()) } fn count_words(reader: &mut io::BufReader) -> io::Result { let mut counts = WordCounts::new(); for line in reader.lines() { let line = line?; for w in line.split(|c: char| !c.is_alphabetic()).filter(|w| !w.is_empty()) { count(&mut counts, w.to_lowercase().clone()); } } Ok(counts) }