El Lenguaje de Programación Rust
Prefacio
Introducción
1.
Empezando
1.1.
Instalación
1.2.
¡Hola, Mundo!
1.3.
¡Hola, Cargo!
2.
Programando un juego de adivinanzas
3.
Conceptos Comunes de Programación
3.1.
Variables y Mutabilidad
3.2.
Tipos de Datos
3.3.
Funciones
3.4.
Comentarios
3.5.
Flujo de Control
4.
Entendiendo el Ownership
4.1.
¿Qué es el Ownership?
4.2.
Referencias y Prestamos
4.3.
El Tipo Slice
5.
Usando Structs para Estructurar Datos Relacionados
5.1.
Definiendo e Instanciando Structs
5.2.
Un Programa de Ejemplo Usando Structs
5.3.
Sintaxis de Métodos
6.
Enums y Pattern Matching
6.1.
Definiendo un Enum
6.2.
El operador de control de flujo match
6.3.
Flujo de Control Conciso con if let
7.
Administrando Proyectos en Crecimiento con Paquetes, Crates y Módulos
7.1.
Paquetes y Crates
7.2.
Definiendo módulos para controlar el scope y la privacidad
7.3.
Paths para referirse a un item en el árbol de módulos
7.4.
Incluyendo rutas al Scope con la palabra clave use
7.5.
Separando Módulos en Diferentes Archivos
8.
Colecciones comunes
8.1.
Almacenando listas de valores con vectores
8.2.
Almacenando texto codificado en UTF-8 con Strings
8.3.
Almacenar Claves con Valores Asociados en HashMaps
9.
Manejo de Errores
9.1.
Errores irrecuperables con panic!
9.2.
Errores recuperables con Result
9.3.
panic! o no panic!
10.
Tipos Genéricos, Traits y Lifetimes
10.1.
Tipos de Datos Genéricos
10.2.
Traits: Definiendo Comportamiento Compartido
10.3.
Validando Referencias con Lifetimes
11.
Escribiendo Tests Automatizados
11.1.
Cómo Escribir Tests
11.2.
Controlando Cómo Los Tests Son Ejecutados
11.3.
Organización De Los Tests
12.
Un proyecto de I/O: Construyendo un programa de línea de comandos
12.1.
Aceptando argumentos de línea de comandos
12.2.
Leyendo un archivo
12.3.
Refactorizando para mejorar la modularidad y el manejo de errores
12.4.
Desarrollando la funcionalidad de la biblioteca con T.D.D.
12.5.
Trabajando con Variables de Entorno
12.6.
Escribiendo mensajes de error estándar en lugar del output estándar
13.
Características De Lenguajes Funcionales: Iteradores y Closures
13.1.
Closures: Funciones anónimas que capturan su entorno
13.2.
Procesando una serie de elementos con Iteradores
13.3.
Mejorando nuestro proyecto I/O
13.4.
Comparando Performance: Bucles vs. Iteradores
14.
Más sobre Cargo y Crates.io
14.1.
Personalizando Compilaciones con Perfiles de Lanzamiento
14.2.
Publicando un Crate a Crates.io
14.3.
Cargo Workspaces
14.4.
Instalando Binarios con cargo install
14.5.
Extendiendo Cargo con Comandos Personalizados
15.
Smart Pointers
15.1.
Usando Box<T> para Apuntar a Datos en el Heap
15.2.
Tratando los Smart Pointers como Referencias Regulares con el Trait Deref
15.3.
Ejecutando Código al Limpiar con el Trait Drop
15.4.
Rc<T>, el Smart Pointer de Conteo de Referencias
15.5.
RefCell<T> y el Patrón de Mutabilidad Interior
15.6.
Referencias Circulares Pueden Fugar Memoria
16.
Concurrencia Sin Miedo
16.1.
Usando Threads para Ejecutar Código Simultáneamente
16.2.
Usando el Pasaje de Mensajes para Transferir Datos entre Hilos
16.3.
Concurrencia con Estado Compartido
16.4.
Concurrencia Extensible con los Traits Sync y Send
17.
Async y Await
17.1.
Futures y la sintaxis Async
17.2.
Concurrencia Con Async
17.3.
Trabajar con cualquier número de futuros
17.4.
Streams
17.5.
Profundizando en los Traits para Async
17.6.
Futuros, tareas e hilos
18.
Rust como un Lenguaje de Programación Orientado a Objetos
18.1.
Características de Lenguajes Orientados a Objetos
18.2.
Usando Trait Objects que Permiten Valores de Diferentes Tipos
18.3.
Implementando un Patrón de Diseño Orientado a Objetos
19.
Patterns and Matching
19.1.
Todos los lugares donde se pueden usar Patterns
19.2.
Refutabilidad: Si un Pattern Puede Fallar al Hacer Match
19.3.
Sintaxis de los Patterns
20.
Características Avanzadas
20.1.
Rust Inseguro
20.2.
Advanced Traits
20.3.
Advanced Types
20.4.
Advanced Functions and Closures
20.5.
Macros
21.
Final Project: Building a Multithreaded Web Server
21.1.
Building a Single-Threaded Web Server
21.2.
Turning Our Single-Threaded Server into a Multithreaded Server
21.3.
Graceful Shutdown and Cleanup
22.
Apéndice
22.1.
A - Palabras claves
22.2.
B - Operadores y Símbolos
22.3.
C - Derivable Traits
22.4.
D - Useful Development Tools
22.5.
E - Editions
22.6.
F - Translations of the Book
22.7.
G - Cómo se hace Rust y “Rust Nightly”
Light (default)
Rust
Coal
Navy
Ayu
Latte
Frappé
Macchiato
Mocha
El Lenguaje de Programación Rust
Apéndice
Las siguientes secciones contienen material de referencia que le puede ser útil en su viaje a Rust.