Rust:
Att använda associativa arrayer
Hur man gör:
I Rust tillhandahåller typen HashMap
från modulen std::collections
funktionerna för associativa arrayer. Så här kan du arbeta med dem:
use std::collections::HashMap;
fn main() {
// Skapa en ny HashMap
let mut scores = HashMap::new();
// Infoga värden
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// Tillgå värden
let team_name = String::from("Blue");
if let Some(score) = scores.get(&team_name) {
println!("Poäng för lag Blue: {}", score); // Utmatning: Poäng för lag Blue: 10
}
// Uppdatera ett värde
scores.entry(String::from("Blue")).and_modify(|e| *e += 5);
// Iterera över nyckel-värde-par
for (key, value) in &scores {
println!("{}: {}", key, value); // Utmatning: Blue: 15, Yellow: 50
}
}
Djupdykning
HashMap
i Rust använder en hashfunktion för att mappa nycklar till värden, vilket möjliggör snabb upphämtning av data. Dock kommer denna effektivitet med en kostnad: hash maps bibehåller inte ordningen på sina element. Detta är i kontrast till andra implementationer av associativa arrayer, som de i Python (dict
) eller Ruby, som i senare versioner bibehåller insättningsordning som en funktion. För användningsfall där ordningen på nyckel-värde-par är betydande, kan Rustutvecklare överväga att använda BTreeMap
från modulen std::collections
, som bibehåller ordning men kan erbjuda långsammare insättning och upphämtning jämfört med HashMap
. I slutändan beror valet mellan HashMap
och BTreeMap
på specifika krav gällande ordning och prestanda.