diff --git a/exercises/11_hashmaps/hashmaps3.rs b/exercises/11_hashmaps/hashmaps3.rs index 0a75ee5..f91d5e8 100644 --- a/exercises/11_hashmaps/hashmaps3.rs +++ b/exercises/11_hashmaps/hashmaps3.rs @@ -40,27 +40,29 @@ fn build_scores_table(results: String) -> HashMap { // will be the number of goals conceded by team_2, and similarly // goals scored by team_2 will be the number of goals conceded by // team_1. - for team in vec![&team_1_name, &team_2_name] { - if !scores.contains_key(team) { - let t = Team { - goals_scored: 0, - goals_conceded: 0, - }; + if let Some(t) = scores.get_mut(&team_1_name) { + t.goals_scored += team_1_score; + t.goals_conceded += team_2_score; + } else { + let t = Team { + goals_scored: team_1_score, + goals_conceded: team_2_score, + }; - scores.insert(team.to_string(), t); - } + scores.insert(team_1_name.to_string(), t); } - println!("{}", &team_1_name); - println!("{}", &team_2_name); - - let mut t = scores.get_mut(&team_1_name).unwrap(); - t.goals_scored += team_1_score; - t.goals_conceded += team_2_score; - - let mut t = scores.get_mut(&team_2_name).unwrap(); - t.goals_scored += team_2_score; - t.goals_conceded += team_1_score; + if let Some(t) = scores.get_mut(&team_2_name) { + t.goals_scored += team_2_score; + t.goals_conceded += team_1_score; + } else { + let t = Team { + goals_scored: team_2_score, + goals_conceded: team_1_score, + }; + + scores.insert(team_2_name.to_string(), t); + } } scores }