HashMaps
Stockage clé-valeur
HashMaps est une leçon Learn Rust Coding gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn Rust Coding, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn Rust Coding comprend 4 leçons au total.
Qu'est-ce qu'une HashMap ?
Une HashMap<K, V> stocke des paires clé-valeur. Vous recherchez les valeurs à l'aide de leur clé plutôt que de leur position.
Vous devez l'importer depuis la bibliothèque standard.
use std::collections::HashMap;
fn main() {
let map: HashMap<String, i32> = HashMap::new();
println!("{} entries", map.len());
}Importer HashMap
HashMap ne fait pas partie du prélude ; ajoutez donc cette ligne en haut de votre fichier :
use std::collections::HashMap;
use std::collections::HashMap;
fn main() {
let scores: HashMap<&str, i32> = HashMap::new();
println!("empty: {}", scores.is_empty());
}Insérer des paires
Ajoutez des entrées avec insert en fournissant une clé et une valeur. La table doit être mut.
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert("Alice", 90);
scores.insert("Bob", 85);
println!("{:?}", scores);
}Rechercher des valeurs
Utilisez get pour lire une valeur à partir d'une clé. La méthode renvoie une Option — Some(value) si la valeur est trouvée, et None dans le cas contraire.
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert("Alice", 90);
match scores.get("Alice") {
Some(s) => println!("score {}", s),
None => println!("not found"),
}
}Mettre à jour une valeur
Appeler insert avec une clé existante remplace l'ancienne valeur.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("count", 1);
map.insert("count", 5); // overwrites
println!("{:?}", map.get("count"));
}Insérer uniquement en l'absence de clé
L'API entry avec or_insert insère une valeur par défaut uniquement si la clé est absente.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.entry("x").or_insert(10);
map.entry("x").or_insert(99); // ignored, key exists
println!("{:?}", map.get("x"));
}Compter avec entry
Schéma classique : comptez les occurrences en obtenant une référence mutable avec or_insert, puis en l'incrémentant.
use std::collections::HashMap;
fn main() {
let text = "a b a c b a";
let mut counts = HashMap::new();
for word in text.split_whitespace() {
let c = counts.entry(word).or_insert(0);
*c += 1;
}
println!("{:?}", counts);
}Parcourir les entrées
Parcourez une HashMap pour visiter chaque paire clé-valeur. L'ordre n'est pas garanti.
use std::collections::HashMap;
fn main() {
let mut ages = HashMap::new();
ages.insert("Tom", 30);
ages.insert("Sue", 25);
for (name, age) in &ages {
println!("{} is {}", name, age);
}
}Supprimer des entrées
Supprimez une paire avec remove. La méthode renvoie la valeur supprimée sous forme d'une Option.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("key", 42);
let removed = map.remove("key");
println!("removed {:?}, len {}", removed, map.len());
}Vérifier la présence d'une clé
Utilisez contains_key pour vérifier qu'une clé existe sans récupérer sa valeur.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("on", true);
println!("{}", map.contains_key("on"));
println!("{}", map.contains_key("off"));
}Valeur par défaut avec unwrap_or
Lors de la lecture, vous pouvez fournir une solution de repli avec unwrap_or au lieu de faire correspondre l'Option.
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
let value = map.get("missing").unwrap_or(&0);
println!("{}", value);
}Vérification rapide
Rappelez-vous comment fonctionnent les recherches dans une HashMap.
Récapitulatif
Les HashMaps en Rust :
HashMap<K, V>stocke des paires clé-valeur ; importez-la depuisstd::collections.insertajoute ou remplace ;getrenvoie une Option.entry().or_insert()insère uniquement si la clé est absente.- Parcourez-la avec
for (k, v) in &map.
use std::collections::HashMap;
fn main() {
let mut inventory = HashMap::new();
inventory.insert("apples", 3);
*inventory.entry("apples").or_insert(0) += 2;
println!("{:?}", inventory.get("apples"));
}Questions Fréquemment Posées
La leçon « HashMaps » est-elle gratuite ?
Oui — le texte complet de « HashMaps » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn Rust Coding, passe à CoddyKit PRO. Le cours Learn Rust Coding comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « HashMaps » ?
Stockage clé-valeur Tu pratiques Learn Rust Coding avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn Rust Coding ?
Aucune expérience préalable n'est requise. Learn Rust Coding sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « HashMaps » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn Rust Coding ?
Oui. Chaque leçon Learn Rust Coding inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.