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);
}
}
Create a free account and build your private vault. Share publicly whenever you want.