use std::collections::{BTreeMap, BTreeSet}; #[derive(Default)] pub struct School(BTreeMap>); impl School { pub fn new() -> School { Self::default() } pub fn add(&mut self, grade: u32, student: &str) { self.0.entry(grade).or_default().insert(student.to_string()); } pub fn grades(&self) -> Vec { self.0.keys().cloned().collect() } pub fn grade(&self, grade: u32) -> Option> { self.0.get(&grade).map(|vs| vs.iter().cloned().collect()) } }