Biblioteca estándar de Rust: revisión completa para desarrolladores

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca estándar de Rust: revisión completa



La biblioteca estándar de Rust (std) es la base sobre la que se construye cualquier aplicación en este lenguaje. Proporciona un conjunto de herramientas robustas, eficientes y seguras para resolver tareas típicas, desde trabajar con colecciones hasta la gestión de memoria de bajo nivel. A diferencia de muchos otros lenguajes, la biblioteca estándar de Rust está diseñada para minimizar la dependencia de crates externos para operaciones básicas, manteniendo al mismo tiempo un rendimiento cercano a C/C++.



Módulos principales de la biblioteca estándar



La biblioteca estándar está organizada en módulos lógicos. Veamos los más importantes:



  • std::collections — estructuras de datos: Vec, HashMap, HashSet, BTreeMap, LinkedList y otras.
  • std::io — trabajo con entrada/salida: lectura/escritura de archivos, trabajo con flujos, buffering.
  • std::fs — sistema de archivos: creación, eliminación, copia de archivos y directorios.
  • std::thread — multitarea: creación de hilos, sincronización mediante Mutex, Arc.
  • std::sync — primitivas de sincronización: canales (mpsc), barreras, semáforos.
  • std::net — programación de red: sockets TCP/UDP, direcciones.
  • std::time — trabajo con tiempo: mediciones, temporizadores, duraciones.
  • std::mem — gestión de memoria: tamaños de tipos, alineación, swap, replace.


Colecciones: de Vec a HashMap



Las colecciones en Rust no son solo contenedores. Implementan una API rica y garantizan la seguridad de la memoria en tiempo de compilación. La colección más popular es Vec<T>, un arreglo dinámico.



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


HashMap es un arreglo asociativo con hashing. Es importante destacar que por defecto se utiliza un algoritmo hash criptográficamente seguro (SipHash), lo que previene ataques HashDoS.



use std::collections::HashMap;

fn main() { let mut scores = HashMap::new(); scores.insert(String::from("Alice"), 100); scores.insert(String::from("Bob"), 85); // Obtención segura del valor match scores.get(&String::from("Alice")) { Some(score) => println!("Score: {}", score), None => println!("No encontrado"), } // Recorrido con iterador for (name, score) in &scores { println!("{}: {}", name, score); }}


Trabajo con entrada/salida y archivos



El módulo std::io proporciona tanto herramientas de alto nivel como de bajo nivel para trabajar con flujos de datos. Merecen especial atención los traits Read y Write.



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", "Hello, Rust

Recommendations