main/
main.rs

1use std::collections::HashMap;
2use std::env;
3use std::fs;
4use wc_parser::parse_string;
5
6fn main() {
7    let args: Vec<String> = env::args().collect();
8    let file_path = &args[1];
9    let content = fs::read_to_string(file_path).expect("Something went wrong reading the file");
10    let messages = parse_string(&content, None).unwrap();
11
12    let mut user_counts = HashMap::new();
13    for message in messages {
14        if let Some(author) = message.author {
15            *user_counts.entry(author).or_insert(0) += 1;
16        }
17    }
18
19    let mut sorted_users: Vec<_> = user_counts.into_iter().collect();
20    sorted_users.sort_by(|a, b| b.1.cmp(&a.1));
21
22    println!("Users by message count:");
23    for (user, count) in sorted_users {
24        println!("{}: {}", user, count);
25    }
26}