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.
Rust como un Lenguaje de Programación Orientado a Objetos
17.1.
Características de Lenguajes Orientados a Objetos
17.2.
Usando Trait Objects que Permiten Valores de Diferentes Tipos
17.3.
Implementando un Patrón de Diseño Orientado a Objetos
18.
Patterns and Matching
18.1.
Todos los lugares donde se pueden usar Patterns
18.2.
Refutabilidad: Si un Pattern Puede Fallar al Hacer Match
18.3.
Sintaxis de los Patterns
19.
Características Avanzadas
19.1.
Rust Inseguro
19.2.
Advanced Traits
19.3.
Advanced Types
19.4.
Advanced Functions and Closures
19.5.
Macros
20.
Final Project: Building a Multithreaded Web Server
20.1.
Building a Single-Threaded Web Server
20.2.
Turning Our Single-Threaded Server into a Multithreaded Server
20.3.
Graceful Shutdown and Cleanup
21.
Apéndice
21.1.
A - Palabras claves
21.2.
B - Operadores y Símbolos
21.3.
C - Derivable Traits
21.4.
D - Useful Development Tools
21.5.
E - Editions
21.6.
F - Translations of the Book
21.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.