diff options
| author | mo8it <mo8it@proton.me> | 2024-10-17 14:37:47 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-10-17 14:49:07 +0200 |
| commit | f146553dead78357cd44736dfca97b1349418fa2 (patch) | |
| tree | cc08d5b5f025acb620b755971e37cb1da0b8cf38 | |
| parent | 0432e07864d5ee4d2bac1954c965b2077c0447c6 (diff) | |
hashmap3: Use `or_default`
| -rw-r--r-- | rustlings-macros/info.toml | 8 | ||||
| -rw-r--r-- | solutions/11_hashmaps/hashmaps3.rs | 8 |
2 files changed, 4 insertions, 12 deletions
diff --git a/rustlings-macros/info.toml b/rustlings-macros/info.toml index c1342d6..e705598 100644 --- a/rustlings-macros/info.toml +++ b/rustlings-macros/info.toml @@ -575,12 +575,8 @@ https://doc.rust-lang.org/book/ch08-03-hash-maps.html#only-inserting-a-value-if- name = "hashmaps3" dir = "11_hashmaps" hint = """ -Hint 1: Use the `entry()` and `or_insert()` (or `or_insert_with()`) methods of - `HashMap` to insert the default value of `TeamScores` if a team doesn't - exist in the table yet. - -Learn more in The Book: -https://doc.rust-lang.org/book/ch08-03-hash-maps.html#only-inserting-a-value-if-the-key-has-no-value +Hint 1: Use the `entry()` and `or_default()` methods of `HashMap` to insert the + default value of `TeamScores` if a team doesn't exist in the table yet. Hint 2: If there is already an entry for a given key, the value returned by `entry()` can be updated based on the existing value. diff --git a/solutions/11_hashmaps/hashmaps3.rs b/solutions/11_hashmaps/hashmaps3.rs index 8a5d30b..41da784 100644 --- a/solutions/11_hashmaps/hashmaps3.rs +++ b/solutions/11_hashmaps/hashmaps3.rs @@ -28,17 +28,13 @@ fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> { let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap(); // Insert the default with zeros if a team doesn't exist yet. - let team_1 = scores - .entry(team_1_name) - .or_insert_with(TeamScores::default); + let team_1 = scores.entry(team_1_name).or_default(); // Update the values. team_1.goals_scored += team_1_score; team_1.goals_conceded += team_2_score; // Similarly for the second team. - let team_2 = scores - .entry(team_2_name) - .or_insert_with(TeamScores::default); + let team_2 = scores.entry(team_2_name).or_default(); team_2.goals_scored += team_2_score; team_2.goals_conceded += team_1_score; } |
