Rust

Group By a Key (fold into HashMap)

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
No built-in `group_by`, but `fold` into a `HashMap` does the same thing in two lines — and the type system tracks keys / values correctly.
Rust
Raw
use std::collections::HashMap;

#[derive(Debug)]
struct User<'a> { name: &'a str, team: &'a str }

fn main() {
    let users = vec![
        User { name: "Alice", team: "A" },
        User { name: "Bob",   team: "B" },
        User { name: "Cara",  team: "A" },
        User { name: "Dave",  team: "B" },
    ];

    let by_team: HashMap<&str, Vec<&User>> = users.iter().fold(HashMap::new(), |mut acc, u| {
        acc.entry(u.team).or_default().push(u);
        acc
    });

    for (team, members) in &by_team {
        let names: Vec<&str> = members.iter().map(|u| u.name).collect();
        println!("{team}: {:?}", names);
    }
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.