2025-03-22 15:03:18 -05:00

67 lines
1.7 KiB
Rust

use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
let team_name = String::from("Blue");
let score = scores.get(&team_name).copied().unwrap_or(0);
for (key, value) in &scores {
println!("{key}: {value}");
}
// hash maps and ownership
// Copy trait implementers copy the values into the hash map.
// Owned values like String, values get moved
let field_name = String::from("Favorite color");
let field_value = String::from("Blue");
let mut map = HashMap::new();
map.insert(field_name, field_value);
// Below is invalid use after move
// println!("{field_name}");
// Updating a hash map
// overwriting
let mut scores = HashMap::new();
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Blue"), 20);
println!("{scores:?}");
// adding a key and value only if a key isn't present
let mut scores = HashMap::new();
scores.insert(String::from("Blue"), 10);
scores.entry(String::from("Yellow")).or_insert(50);
scores.entry(String::from("Blue")).or_insert(50);
println!("{scores:?}");
// updating a value based on the old value
let text = "hello world wonderful world";
let mut map = HashMap::new();
for word in text.split_whitespace() {
let count = map.entry(word).or_insert(0);
*count += 1;
}
println!("{map:?}");
// Custom hashing functions
//
// Why: Default one is secure but kinda slow
// Can use a different hashing function if too slow
// Talks about how in chapter 10.
}