Bruke associative tabeller

Rust:
Bruke associative tabeller

Hvordan:

I Rust gir HashMap-typen fra std::collections-modulen funksjonaliteten til assosiative tabeller. Her er hvordan du kan jobbe med dem:

use std::collections::HashMap;

fn main() {
    // Opprette en ny HashMap
    let mut scores = HashMap::new();

    // Sette inn verdier
    scores.insert(String::from("Blå"), 10);
    scores.insert(String::from("Gul"), 50);

    // Tilgå verdier
    let team_navn = String::from("Blå");
    if let Some(score) = scores.get(&team_navn) {
        println!("Poeng for team Blå: {}", score); // Utdata: Poeng for team Blå: 10
    }

    // Oppdatere en verdi
    scores.entry(String::from("Blå")).and_modify(|e| *e += 5);

    // Iterere over nøkkel-verdi par
    for (nøkkel, verdi) in &scores {
        println!("{}: {}", nøkkel, verdi); // Utdata: Blå: 15, Gul: 50
    }
}

Dypdykk

HashMap i Rust bruker en hash-funksjon for å kartlegge nøkler til verdier, noe som muliggjør rask datahenting. Imidlertid kommer denne effektiviteten med en kostnad: hash maps opprettholder ikke rekkefølgen av elementene sine. Dette står i kontrast til andre implementeringer av assosiative tabeller, som de i Python (dict) eller Ruby, som i de nyere versjonene opprettholder rekkefølgen av innskudd som en funksjon. For brukstilfeller der rekkefølgen av nøkkel-verdi par er betydelig, kan Rust-utviklere vurdere å bruke BTreeMap fra std::collections-modulen, som opprettholder rekkefølgen, men kan tilby langsommere innsetting og henting sammenlignet med HashMap. Til syvende og sist avhenger valget mellom HashMap og BTreeMap av spesifikke krav rundt ordning og ytelse.