Bibliothèque standard de Rust : aperçu complet pour les développeurs

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque standard de Rust : aperçu complet



La bibliothèque standard de Rust (std) est le fondement sur lequel repose toute application dans ce langage. Elle fournit un ensemble d'outils fiables, efficaces et sécurisés pour résoudre des tâches courantes, allant du travail avec les collections à la gestion de la mémoire de bas niveau. Contrairement à de nombreux autres langages, la bibliothèque standard de Rust est conçue pour minimiser la dépendance aux crates externes pour les opérations de base, tout en conservant des performances proches de celles du C/C++.



Modules principaux de la bibliothèque standard



La bibliothèque standard est organisée en modules logiques. Examinons les principaux :



  • std::collections — structures de données : Vec, HashMap, HashSet, BTreeMap, LinkedList et autres.
  • std::io — gestion des entrées-sorties : lecture/écriture de fichiers, travail avec les flux, mise en tampon.
  • std::fs — système de fichiers : création, suppression, copie de fichiers et de répertoires.
  • std::thread — multithreading : création de threads, synchronisation via Mutex, Arc.
  • std::sync — primitives de synchronisation : canaux (mpsc), barrières, sémaphores.
  • std::net — programmation réseau : sockets TCP/UDP, adresses.
  • std::time — gestion du temps : mesures, minuteries, durées.
  • std::mem — gestion de la mémoire : tailles des types, alignement, swap, replace.


Collections : de Vec à HashMap



Les collections en Rust ne sont pas de simples conteneurs. Elles implémentent une API riche et garantissent la sécurité de la mémoire à la compilation. La collection la plus populaire est Vec<T> — un tableau dynamique.



fn main() {    let mut numbers: Vec<i32> = vec![1, 2, 3, 4];    numbers.push(5);        // Itération avec modification    for num in &mut numbers {        *num *= 2;    }        // Filtrage    let evens: Vec<&i32> = numbers.iter()        .filter(|&&x| x % 2 == 0)        .collect();        println!("{:?}", evens); // [2, 4, 6, 8, 10]}


HashMap — un tableau associatif avec hachage. Il est important de noter que par défaut, un algorithme de hachage cryptographique (SipHash) est utilisé, ce qui prévient les attaques de type HashDoS.



use std::collections::HashMap;

fn main() { let mut scores = HashMap::new(); scores.insert(String::from("Alice"), 100); scores.insert(String::from("Bob"), 85); // Récupération sécurisée d'une valeur match scores.get(&String::from("Alice")) { Some(score) => println!("Score : {}", score), None => println!("Non trouvé"), } // Parcours avec itérateur for (name, score) in &scores { println!("{} : {}", name, score); }}


Travail avec les entrées-sorties et les fichiers



Le module std::io fournit à la fois des outils de haut niveau et de bas niveau pour travailler avec les flux de données. Les traits Read et Write méritent une attention particulière.



use std::fs::File;use std::io::{self, Read, Write};

fn read_file(path: &str) -> io::Result<String> { let mut file = File::open(path)?; let mut contents = String::new(); file.read_to_string(&mut contents)?; Ok(contents)}

fn write_file(path: &str, data: &str) -> io::Result<()> { let mut file = File::create(path)?; file.write_all(data.as_bytes())?; Ok(())}

fn main() -> io::Result<()> { write_file("example.txt", "Bonjour, Rust

Recommendations