// Created on savesnippets.com ยท https://savesnippets.com/28m2hw9WputihZ 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); } }