mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-24 22:50:26 +00:00
hashmap3: Use or_default
This commit is contained in:
parent
0432e07864
commit
f146553dea
2 changed files with 4 additions and 12 deletions
|
@ -575,12 +575,8 @@ https://doc.rust-lang.org/book/ch08-03-hash-maps.html#only-inserting-a-value-if-
|
||||||
name = "hashmaps3"
|
name = "hashmaps3"
|
||||||
dir = "11_hashmaps"
|
dir = "11_hashmaps"
|
||||||
hint = """
|
hint = """
|
||||||
Hint 1: Use the `entry()` and `or_insert()` (or `or_insert_with()`) methods of
|
Hint 1: Use the `entry()` and `or_default()` methods of `HashMap` to insert the
|
||||||
`HashMap` to insert the default value of `TeamScores` if a team doesn't
|
default value of `TeamScores` if a team doesn't exist in the table yet.
|
||||||
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 2: If there is already an entry for a given key, the value returned by
|
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.
|
`entry()` can be updated based on the existing value.
|
||||||
|
|
|
@ -28,17 +28,13 @@ fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> {
|
||||||
let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
||||||
|
|
||||||
// Insert the default with zeros if a team doesn't exist yet.
|
// Insert the default with zeros if a team doesn't exist yet.
|
||||||
let team_1 = scores
|
let team_1 = scores.entry(team_1_name).or_default();
|
||||||
.entry(team_1_name)
|
|
||||||
.or_insert_with(TeamScores::default);
|
|
||||||
// Update the values.
|
// Update the values.
|
||||||
team_1.goals_scored += team_1_score;
|
team_1.goals_scored += team_1_score;
|
||||||
team_1.goals_conceded += team_2_score;
|
team_1.goals_conceded += team_2_score;
|
||||||
|
|
||||||
// Similarly for the second team.
|
// Similarly for the second team.
|
||||||
let team_2 = scores
|
let team_2 = scores.entry(team_2_name).or_default();
|
||||||
.entry(team_2_name)
|
|
||||||
.or_insert_with(TeamScores::default);
|
|
||||||
team_2.goals_scored += team_2_score;
|
team_2.goals_scored += team_2_score;
|
||||||
team_2.goals_conceded += team_1_score;
|
team_2.goals_conceded += team_1_score;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue