Rust

    1. Introduccion
      1. Historia de Rust
        1. Orígenes en Mozilla Research (Graydon Hoare, 2006–2010)
        2. Evolución de prototipos tempranos a Rust 0.x
        3. Lanzamiento de Rust 1.0 (2015)
        4. Consolidación de la estabilidad del lenguaje y del compilador (rustc)
        5. Filosofía de seguridad de memoria sin garbage collector
        6. Filosofía de concurrencia sin miedo (“fearless concurrency”)
        7. Influencia de Cyclone, ML, C++ y el ecosistema de sistemas
        8. Participación comunitaria y apertura del desarrollo
        9. Migración desde la sintaxis antigua (~, @, &) hacia el modelo actual de ownership
        10. Adopción industrial en sistemas embebidos, backend de alto rendimiento y navegadores
        11. Rol de Servo y el motor de renderizado experimental
        12. Influencia de Rust en otros lenguajes de sistemas
      2. Ediciones de Rust y Compatibilidad
        1. Edición 2015
        2. Edición 2018
        3. Edición 2021
        4. Planificación de ediciones futuras (por ejemplo 2024)
        5. Ediciones vs versiones del compilador (rustc)
        6. Estabilidad del lenguaje y promesa de no romper código estable
        7. Estabilidad de la librería estándar (std) y API pública
        8. Uso de lints para migración entre ediciones
        9. Modo cargo fix --edition y migración asistida
        10. Compatibilidad cruzada entre crates de distintas ediciones
        11. Feature flags experimentales en nightly
        12. #![feature(...)] y límites de estabilidad
        13. Cambios de sintaxis entre ediciones
        14. Cambios en el sistema de módulos entre ediciones
        15. Cambios en async/await y try operator entre ediciones
        16. Cambios en paths relativos y absoluta vs crate::
      3. Instalación de Rust
        1. rustup como herramienta oficial de instalación
        2. Canales stable, beta, nightly
        3. Instalación en Windows (MSVC vs GNU toolchain)
        4. Instalación en macOS (homebrew, pkg oficial)
        5. Instalación en Linux (gestores de paquetes vs rustup)
        6. Añadir componentes (rustfmt, clippy)
        7. rustup component add
        8. Targets de compilación cruzada (rustup target add)
        9. Configuración del linker para cross-compiling
        10. Toolchains específicos por proyecto (rust-toolchain.toml)
        11. Versiones fijadas para CI
        12. Perfiles corporativos y espejos internos de toolchain
        13. Instalar cargo en entornos mínimos
        14. Modo offline y caché local de crates
      4. Ejecución de Código Rust y Flujo de Trabajo
        1. rustc archivo.rs
        2. cargo new
        3. cargo init
        4. cargo build
        5. cargo run
        6. cargo check
        7. cargo test básico
        8. cargo bench básico
        9. cargo doc --open
        10. Flags comunes de compilación (--release, --verbose)
        11. Perfiles dev y release
        12. Nivel de optimización (-C opt-level)
        13. RUSTFLAGS y configuración avanzada del compilador
        14. cargo clippy y análisis estático
        15. REPLs experimentales (evcxr)
        16. Scripts rápidos y prototipos con cargo-script
        17. Uso del Playground de Rust
        18. Redirección de stdin/stdout/stderr en binarios Rust
      5. IDEs y Editores de Código
        1. rust-analyzer y protocolo LSP
        2. VS Code con rust-analyzer
        3. IntelliJ Rust / CLion
        4. Vim / Neovim con LSP
        5. Emacs (lsp-mode, eglot)
        6. Autoformato con rustfmt
        7. Sugerencias y acciones rápidas de clippy
        8. Navegación por definiciones y go to definition
        9. Renombrado simbólico seguro (rename refactor)
        10. Depuración con lldb
        11. Depuración con gdb
        12. Mapas de memoria y stepping a nivel de instrucción
        13. Integración con CodeLLDB en VS Code
        14. Integración con herramientas de profiling
        15. Soporte de test integrado en el IDE
        16. Integración con cargo watch para recarga continua
      6. Gestión de Dependencias y Entornos
        1. cargo como build system y gestor de dependencias
        2. Cargo.toml
        3. Cargo.lock
        4. Versionado semántico en dependencias ("1.2", "^1.2", "~1.2")
        5. Dependencias opcionales (optional = true)
        6. Features activables por crate
        7. Workspaces de Cargo
        8. Herencia de workspace en Cargo.toml
        9. Dependencias locales (path =)
        10. Dependencias desde Git
        11. Overrides de versiones ([patch])
        12. Mirrors y registries privados
        13. Vendorización de crates (cargo vendor)
        14. Caché local de compilación incremental
        15. Reproducibilidad entre entornos
        16. Compilación determinista para entrega binaria
        17. Bloqueo de versiones en CI
        18. Auditoría de dependencias (cargo audit)
      7. Distribución de Crates
        1. Crates binarios
        2. Crates de librería
        3. Crates proc-macro
        4. Crates no_std
        5. Crates FFI (cdylib, staticlib)
        6. Publicación en crates.io
        7. cargo publish
        8. cargo yank
        9. Versionado semántico responsable
        10. Metadatos obligatorios en Cargo.toml
        11. Licencia y license/license-file
        12. readme y documentación pública
        13. Keywords y categorías
        14. exclude / include
        15. Seguridad de la cadena de suministro
        16. Firmas y verificación de integridad
        17. Auditoría de licencias (cargo deny)
        18. Revisión por pares y mantenimiento comunitario
      8. Herramientas Complementarias
        1. rustfmt (formato)
        2. clippy (linter)
        3. cargo doc (documentación)
        4. cargo test (testing)
        5. cargo bench (benchmarking)
        6. cargo profile / perfiles de rendimiento
        7. cargo tree (árbol de dependencias)
        8. cargo metadata
        9. cargo install
        10. cargo uninstall
        11. cargo run --release
        12. cargo build --target
        13. cargo fix
        14. cargo fmt
        15. cargo clippy --fix
        16. Integración con CI/CD
        17. Integración con contenedores
        18. Integración con sistemas de empaquetado nativo
        19. Reproducibilidad en builds herméticos
        20. Automatización con Makefile y just
    2. Fundamentos
      1. Tipos de Datos Básicos
        1. Variables y let
          1. Declaración con inferencia de tipo
          2. Anotación explícita de tipo
          3. Mutabilidad con mut
          4. Sombras (shadowing) y redeclaración
          5. Variables temporales y scope de bloque
          6. const para constantes en tiempo de compilación
          7. static y static mut
        2. Booleanos (bool)
        3. Tipos numéricos escalares
          1. Enteros con signo (i8, i16, i32, i64, i128, isize)
          2. Enteros sin signo (u8, u16, u32, u64, u128, usize)
          3. Flotantes (f32, f64)
          4. Literales numéricos con separadores _
          5. Conversión entre anchos de entero
          6. Casting con as
          7. Operaciones “checked”, “wrapping”, “saturating”
          8. Módulo std::num
          9. Rangos y límites (MIN, MAX)
        4. Caracteres y texto
          1. char como escalar Unicode
          2. Literales de carácter
          3. &str (slice de string inmutable)
          4. String (buffer dinámico UTF-8)
          5. Conversión entre &str y String
          6. String::from y .to_string()
          7. Indexación y slicing seguro en UTF-8
          8. Formato con macros (format!, println!)
          9. Cow<'a, str>
          10. OsStr y OsString
          11. Path y PathBuf
        5. Tuplas
          1. Tuplas con nombre posicional
          2. Tuple structs
          3. Desestructuración de tuplas
          4. Retorno múltiple con tuplas
          5. Tupla vacía ()
          6. () como tipo unit
        6. Arrays y slices
          1. Arrays fijos [T; N]
          2. Slices &[T]
          3. Slices mutables &mut [T]
          4. Indexación segura y get()
          5. Recortes (split_at, chunks, windows)
          6. Slices de bytes (&[u8])
          7. Conversión de arrays a slices
        7. Propiedad y move
          1. Propiedad exclusiva de valores
          2. Movimiento vs copia (Copy)
          3. Clone explícito
          4. Tipos Copy
          5. Tipos que no son Copy
          6. Transferencia de propiedad a funciones
          7. Retorno de propiedad desde funciones
        8. Préstamos y referencias
          1. Referencias inmutables &T
          2. Referencias mutables &mut T
          3. Reglas de aliasing único para mutables
          4. Duración del préstamo (lifetime implícito)
          5. Prestando vs moviendo
          6. Mutabilidad interior
          7. Reglas de borrow checker
        9. Lifetimes
          1. Parámetros de lifetime explícitos ('a)
          2. Elision de lifetimes
          3. Relaciones de subvida ('a: 'b)
          4. Lifetimes en referencias de retorno
          5. Lifetimes en structs
          6. Lifetimes en métodos impl
          7. 'static
          8. Lifetimes en closures
        10. Enumeraciones (enum)
        11. Variantes sin datos
        12. Variantes tipo tupla
        13. Variantes tipo struct
        14. Patrones exhaustivos con match
        15. Option<T>
        16. Result<T, E>
        17. Ordering
        18. Never type (!)
        19. Structs
        20. Structs con campos nombrados
        21. Tuple structs
        22. Unit structs
        23. pub y visibilidad de campos
        24. Inicialización con sintaxis { campo: valor }
        25. Actualización de struct (..otro)
        26. Propiedad de campos y movimientos parciales
        27. Empaquetar datos y semántica de valor
        28. Traits básicos
        29. Copy
        30. Clone
        31. Debug
        32. Display
        33. Default
        34. PartialEq / Eq
        35. PartialOrd / Ord
        36. Hash
        37. Send
        38. Sync
        39. Unpin
        40. Sized
        41. Conversión y coerción
        42. From / Into
        43. TryFrom / TryInto
        44. AsRef / AsMut
        45. Borrow
        46. Deref / DerefMut
        47. Auto-deref en llamadas a métodos
        48. Conversión numérica con as
        49. Conversión de slices entre tipos compatibles
        50. Pattern matching de destructuración
        51. let + patrones
        52. if let
        53. while let
        54. Patrones en parámetros de función
        55. Patrones en match
        56. Patrones anidados en structs y enums
        57. Patrones con guardas (if)
        58. Patrones con @
        59. Patrones con _
        60. Patrones de rango (..=)
      2. Operadores
        1. Operadores aritméticos (+, -, *, /, %)
        2. Operadores de asignación compuesta (+=, -=, *=, /=, %=)
        3. Operadores bit a bit (&, |, ^, !, <<, >>)
        4. Comparación (==, !=, <, >, <=, >=)
        5. Operadores lógicos (&&, ||, !)
        6. Precedencia de operadores
        7. Evaluación corta (short-circuit) en && y ||
        8. Operador de rango (.., ..=)
        9. Desreferenciación (*)
        10. Indexación ([])
        11. ? para propagación de errores
        12. as para casting explícito
        13. Operador ref en patrones
        14. box (histórico) y Box::new
        15. .. en patrones de struct
        16. .. en patrones de tuplas y enums
        17. & y &mut en patrones de referencia
        18. | en patrones alternativos en match
        19. @ en patrones con binding
        20. .. en ranges de iteración
      3. Control de Flujo
        1. if
        2. else if
        3. else
        4. if como expresión
        5. match
        6. match exhaustivo
        7. match con guardas (if cond)
        8. match con patrones anidados
        9. if let
        10. while
        11. while let
        12. loop
        13. for
        14. Rango en for
        15. break
        16. continue
        17. return
        18. Etiquetas de bucle ('label:)
        19. break 'label
        20. continue 'label
        21. let else para validación temprana
        22. try blocks experimentales
        23. panic! como corte de control
        24. unreachable! y todo!
        25. assert! y control en test
      4. Funciones
        1. Definición de funciones con fn
        2. Parámetros con tipo explícito
        3. Retorno con ->
        4. Retorno implícito sin return
        5. Funciones libres vs métodos asociados
        6. Métodos en impl
        7. Métodos estáticos (fn new())
        8. Referencias &self
        9. Referencias &mut self
        10. Funciones genéricas
        11. Trait bounds en firmas (where)
        12. Lifetimes explícitos en firmas
        13. Funciones const fn
        14. Funciones unsafe fn
        15. Funciones extern "C"
        16. Funciones inline (#[inline])
        17. Atributos en funciones (#[must_use], #[cold], #[inline(always)])
        18. Punteros a función (fn vs Fn traits)
        19. macro_rules! vs fn
        20. Visibilidad pub en funciones
      5. Closures
        1. Sintaxis |args| expr
        2. move closures
        3. Inferencia de tipos en closures
        4. Captura por referencia
        5. Captura por mutable referencia
        6. Captura por movimiento
        7. Traits Fn, FnMut, FnOnce
        8. Conversión de closures a punteros de función
        9. Almacenamiento de closures en Box<dyn Fn>
        10. Lifetimes en closures
        11. Uso de closures en iteradores
        12. Uso de closures en APIs async
        13. Cierres como callbacks en FFI seguro
        14. impl Fn en parámetros
        15. impl FnOnce para consumo de recursos
      6. Manejo de Errores
        1. Result<T, E>
        2. Option<T>
        3. Operador ?
        4. unwrap
        5. expect
        6. ok_or / ok_or_else
        7. map_err
        8. and_then
        9. Definir tipos de error propios
        10. Trait std::error::Error
        11. Errores encadenados
        12. thiserror (crates de error derivado)
        13. Manejo de errores en main
        14. Devolución de Result desde main
        15. panic!
        16. Recuperación después de panic con catch_unwind
        17. assert!, assert_eq!, debug_assert!
        18. todo!
        19. unimplemented!
        20. unreachable!
      7. Prelude y Librería Estándar
        1. std::prelude
        2. Carga automática del prelude
        3. Tipos fundamentales en el prelude
        4. Traits fundamentales en el prelude
        5. std vs core
        6. alloc en entornos no_std
        7. use std::... y rutas absolutas
        8. pub use para reexportar APIs
        9. std::io
        10. std::fs
        11. std::env
        12. std::path
        13. std::time
        14. std::thread
        15. std::sync
        16. std::net
        17. std::process
        18. std::mem
        19. std::ptr
        20. std::slice
        21. std::str
        22. std::string
        23. std::vec
      8. Módulos y Visibilidad
        1. mod
        2. Archivos y submódulos
        3. Jerarquía de módulos (crate, super, self)
        4. pub
        5. pub(crate)
        6. pub(super)
        7. pub(in path)
        8. use
        9. use as
        10. Reexport con pub use
        11. Separación binario / librería (src/main.rs, src/lib.rs)
        12. Árbol de módulos y layout de carpetas
        13. Módulos privados internos
        14. Módulos cfg condicionales
        15. #[path = "file.rs"]
        16. extern crate (histórico)
        17. crate:: paths absolutos
        18. super:: paths relativos
        19. Módulos inline { ... }
        20. Tests integrados en módulos (#[cfg(test)])
      9. Atributos y Macros Básicas
        1. Atributos en ítems (#[derive], #[inline], #[allow])
        2. Atributos en módulos (#![allow], #![deny])
        3. Atributos de lint (#[warn(clippy::...)])
        4. Macros declarativas macro_rules!
        5. Macros de formato (println!, eprintln!, format!)
        6. Macros de colección (vec!, vecDeque! en crates externos)
        7. Macros de aserción (assert!, debug_assert!)
        8. Macros de error (panic!)
        9. Macros condicionales (cfg!)
        10. Macros de test (#[test])
        11. Macros de derivación automática (#[derive(Clone, Debug, ...)])
      10. Atributos de Compilación Condicional
      11. #[cfg(target_os = "linux")]
      12. #[cfg(target_arch = "x86_64")]
      13. #[cfg(feature = "foo")]
      14. #[cfg(test)]
      15. #[cfg(debug_assertions)]
      16. #[cfg_attr(...)]
      17. cfg_if! (macro de conveniencia)
      18. Builds multiplataforma con cfg
      19. Código específico de arquitectura
      20. Desactivación de partes inseguras en WASM
      21. Estándares de Estilo
      22. Formato con rustfmt
      23. Organización de use
      24. Nomenclatura de tipos (PascalCase)
      25. Nomenclatura de variables y funciones (snake_case)
      26. Constantes (SCREAMING_SNAKE_CASE)
      27. División en módulos pequeños
      28. Comentarios /// para docs públicas
      29. Comentarios //! a nivel de crate
      30. Comentarios de implementación //
      31. #[allow] vs #[deny] para lints
      32. Políticas internas de clippy
      33. Reglas de API públicas estables
      34. Visibilidad mínima (pub vs pub(crate))
      35. Convenciones de Proyecto
      36. src/main.rs
      37. src/lib.rs
      38. src/bin/*.rs
      39. Cargo.toml
      40. Cargo.lock
      41. README.md
      42. LICENSE
      43. rust-toolchain.toml
      44. benches/
      45. examples/
      46. tests/
      47. build.rs
      48. target/
      49. Módulos internos mod.rs vs foo.rs
      50. Estructura por dominio
      51. Estructura por capas (core, infra, api)
      52. Reexportar APIs en lib.rs
      53. #[deny(missing_docs)]
      54. Versionado del crate
      55. Features opcionales y default-features = false
    3. Estructuras y manipulación de datos
      1. Colecciones Estándar
        1. Vec<T>
        2. Creación y vec![]
        3. Push / pop
        4. Indexación y .get()
        5. Iteración mutable e inmutable
        6. Reservar capacidad (with_capacity, reserve)
        7. insert, remove
        8. retain
        9. sort, sort_by, sort_unstable
        10. dedup
        11. drain
        12. Conversión Vec<T> ↔ slice
        13. VecDeque<T>
        14. VecDeque push_front / push_back
        15. LinkedList<T>
        16. BinaryHeap<T>
        17. HashMap<K, V>
        18. BTreeMap<K, V>
        19. HashSet<T>
        20. BTreeSet<T>
        21. IndexMap, IndexSet (orden estable, crates externos)
        22. SmallVec, ArrayVec (almacenamiento en stack)
        23. Cow<T>
        24. Range
        25. Option<T> como colección parcial
        26. Result<T,E> como flujo condicional
        27. APIs de iteradores en colecciones
        28. String y Vec<u8>
        29. Box<[T]>
        30. Rc<[T]> y Arc<[T]>
      2. Pilas y Colas
        1. Vec<T> como pila LIFO
        2. VecDeque<T> como cola FIFO
        3. BinaryHeap<T> como cola de prioridad
        4. Múltiples productores / múltiples consumidores usando canales
        5. Estructuras lock-free con crossbeam (crates externos)
        6. Colas concurrentes en tokio::sync
        7. std::sync::mpsc
        8. Orden de mensajes garantizado
        9. try_recv / recv_timeout
        10. Backpressure en colas async
      3. Slicing y Vistas
        1. Slices &[T]
        2. Slices mutables &mut [T]
        3. Vistas parciales (split_at, split)
        4. Ventanas (windows)
        5. Chunks (chunks, chunks_exact)
        6. array_chunks y vistas fijas
        7. as_slice / as_mut_slice
        8. str como slice de u8 UTF-8
        9. Slices crudas (*const T, *mut T)
        10. std::slice::from_raw_parts
        11. Reglas de seguridad en slices no verificados
      4. Manipulación de Strings
        1. String
        2. &str
        3. Concatenación con push_str
        4. Concatenación con +
        5. Formato con format!
        6. Interpolación con println!
        7. Iteración por bytes
        8. Iteración por char
        9. Iteración por grapheme (crates externos)
        10. Substrings seguras por rango de bytes válidos
        11. Búsqueda (find, contains)
        12. Reemplazo (replace)
        13. Divisiones (split, split_whitespace)
        14. trim, trim_matches
        15. Conversión entre OsString, PathBuf, String
        16. to_string_lossy
        17. Normalización Unicode (crates externos)
        18. Cow<'_, str> para evitar copias
        19. Propiedad vs referencia en APIs de texto
        20. String::leak
      5. Expresiones Regulares y Parsing
        1. Crate regex
        2. Expresiones regulares compiladas
        3. Búsquedas globales
        4. Capturas con grupos
        5. Reemplazo con patrones
        6. División por regex
        7. Expresiones regulares sin backtracking exponencial
        8. lazy_static / once_cell para regex globales
        9. regex-automata (crates especializadas)
        10. Parsing manual con chars()
        11. Parsing con nom
        12. Parsers basados en combinadores
        13. Parsing binario con nom / binrw
        14. serde para deserialización estructurada
      6. Archivos y I/O
        1. std::fs::File
        2. File::open
        3. File::create
        4. Lectura síncrona (read_to_end, read_to_string)
        5. Escritura síncrona (write_all)
        6. BufReader
        7. BufWriter
        8. Lectura línea a línea (read_line)
        9. Iteración sobre líneas
        10. Permisos de archivo (set_permissions)
        11. metadata
        12. Directorios (read_dir)
        13. Creación y borrado de carpetas
        14. Renombrar y mover archivos
        15. Rutas (Path, PathBuf)
        16. std::env::current_dir
        17. tempfile (crates externos)
        18. Archivos mapeados en memoria (crates externos)
        19. I/O sin bloqueo en tokio::fs
        20. I/O con async-std::fs
      7. Formatos de Datos
        1. JSON con serde_json
        2. TOML con toml
        3. YAML con serde_yaml
        4. CBOR / MessagePack (crates externos)
        5. Protobuf / FlatBuffers (crates externos)
        6. CSV con csv
        7. Lectura binaria con byteorder
        8. Escritura binaria con byteorder
        9. Manipulación de bits en buffers (bitvec)
        10. Serialización binaria con bincode
        11. serde derive (Serialize, Deserialize)
        12. Versionado de esquemas
        13. Migración de estructuras serializadas
        14. Validación de datos deserializados
      8. Fechas y Tiempo
        1. std::time::Duration
        2. std::time::Instant
        3. std::time::SystemTime
        4. Diferencias de tiempo (duration_since)
        5. Timeouts en I/O
        6. Retrasos y sleep con std::thread::sleep
        7. Retrasos async con tokio::time::sleep
        8. Medición de rendimiento
        9. Perfiles de latencia
        10. Crate chrono (fecha/hora civil)
        11. Zonas horarias con chrono_tz
        12. Formateo de timestamps
        13. Parsing de timestamps
        14. Sincronización periódica y scheduling (crates externos)
        15. Timers async recurrentes (crates async)
      9. Propiedad Compartida y Gestión de Recursos
        1. Box<T>
        2. Rc<T>
        3. Arc<T>
        4. Cell<T>
        5. RefCell<T>
        6. Mutex<T>
        7. RwLock<T>
        8. OnceCell<T>
        9. LazyLock<T>
        10. AtomicBool, AtomicUsize, etc.
        11. Conteo de referencias y ciclos
        12. Fugas deliberadas (Box::leak)
        13. Smart pointers específicos de librería
        14. RAII y liberación determinista con Drop
      10. Iteradores
      11. Iterator trait
      12. .next()
      13. for sobre iteradores
      14. Adaptadores (map, filter, flat_map)
      15. enumerate
      16. zip
      17. chain
      18. rev
      19. take, skip
      20. collect
      21. Colección en Vec
      22. Colección en HashMap
      23. Iteradores infinitos y std::iter::repeat
      24. std::iter::from_fn
      25. inspect
      26. fold
      27. try_fold
      28. Propiedad vs referencia en iteradores
      29. Iteradores que consumen (into_iter)
      30. Iteradores prestados (iter, iter_mut)
      31. Iteradores paralelos (rayon)
      32. Iteradores async (Stream en ecosistema async)
      33. Expresiones Funcionales y Pipelines
      34. .map(...)
      35. .filter(...)
      36. .filter_map(...)
      37. .find(...)
      38. .any(...)
      39. .all(...)
      40. .position(...)
      41. .fold(...)
      42. .reduce(...)
      43. .group_by(...) (crates externos)
      44. Transformaciones in-place vs alocar nuevos Vec
      45. Reutilización de buffers
      46. Zero-copy usando slices
      47. Evitar clonados innecesarios
      48. Cow en pipelines de texto
      49. Seguridad y Manejo Binario
      50. std::mem::transmute (uso inseguro)
      51. std::mem::replace
      52. std::mem::take
      53. MaybeUninit<T>
      54. Layout de memoria (#[repr(C)], #[repr(packed)])
      55. Alineación (align_of, align_to)
      56. Lectura/escritura de bytes con byteorder
      57. Endianness explícito
      58. Acceso crudo con punteros (*const T, *mut T)
      59. slice::from_raw_parts
      60. ptr::copy_nonoverlapping
      61. Control de aliasing en unsafe
      62. Serialización binaria para FFI
      63. Mapear estructuras Rust a C
    4. Programación estructurada y modular
      1. Programación Orientada a Datos y Traits
        1. Structs como tipos de datos centrales
        2. impl blocks
        3. Métodos asociados
        4. Métodos que consumen self
        5. Métodos que prestan &self
        6. Métodos que prestan &mut self
        7. Encapsulación con campos privados
        8. Getters explícitos
        9. Constructores estilo new()
        10. Builders encadenables
        11. Propiedades inmutables por defecto
        12. APIs seguras por tipo
        13. APIs que evitan estados inválidos
        14. Patrón tipo-sello (sealed traits en módulos privados)
        15. Patrón unsafe encapsulado en capa segura
      2. Traits e Implementaciones
        1. Definición de trait
        2. Métodos requeridos
        3. Métodos con implementación por defecto
        4. Implementación de traits para tipos propios
        5. Implementación de traits externos para tipos propios (coherencia)
        6. Implementación de traits propios para tipos externos (orfan rule)
        7. Traits marcadores (Send, Sync, Unpin)
        8. Traits auto (auto trait)
        9. dyn Trait
        10. Trait objects (&dyn Trait, Box<dyn Trait>)
        11. Dispatch dinámico vs estático
        12. Traits genéricos
        13. Associated types en traits
        14. Supertraits
        15. where bounds complejos
        16. Implementaciones en impl<T> Trait for Tipo<T>
        17. Coerción de &T a &dyn Trait
        18. Objetos trait en interfaces plugin
        19. Objetos trait y Send + Sync
        20. Limitaciones de objetos trait (no Self en firma)
      3. Encapsulación y Abstracción
        1. Visibilidad pub
        2. Visibilidad pub(crate)
        3. Visibilidad pub(super)
        4. Campos privados y módulos amigos
        5. Patrones con newtype
        6. Patrones de estado interno protegido
        7. API mínima segura
        8. Diseño de invariantes internas
        9. Tipos fantasma (phantom types)
        10. PhantomData<T>
        11. Tipos con lifetimes en la API pública
        12. Sellado de traits para evitar implementaciones externas
      4. Composición vs Herencia
        1. Composición de structs
        2. Contención de datos (struct A { b: B })
        3. Delegación manual de métodos
        4. Deref para ergonomía de delegación
        5. Herencia ausente en el lenguaje base
        6. Subtipado vía traits
        7. Polimorfismo paramétrico (genéricos)
        8. Polimorfismo dinámico (trait objects)
        9. Patrones de tipo estado (state pattern)
        10. Patrones de builder tipado
        11. Patrones GADT a través de enums
        12. Patrones de “typestate programming”
      5. Macros de Atributo y Derive
        1. #[derive(Debug)]
        2. #[derive(Clone)]
        3. #[derive(Copy)]
        4. #[derive(PartialEq, Eq)]
        5. #[derive(PartialOrd, Ord)]
        6. #[derive(Hash)]
        7. #[derive(Default)]
        8. #[derive(Serialize, Deserialize)]
        9. Atributos en campos (#[serde(rename = "...")])
        10. Procedural macros (proc-macro)
        11. #[test]
        12. #[bench] (inestable / crates externos)
        13. #[cfg(...)]
        14. #[inline]
        15. #[must_use]
        16. #[repr(C)]
        17. #[repr(packed)]
        18. #[non_exhaustive]
        19. #[deny(...)], #[allow(...)], #[warn(...)]
        20. Atributos específicos de plataforma
      6. Módulos y Crates (avanzado)
        1. Crates binarios
        2. Crates librería
        3. Crates internos en un workspace
        4. Árbol de módulos público (lib.rs)
        5. Reexportar símbolos (pub use)
        6. Organización por dominio
        7. Organización por capa lógica
        8. Patrones prelude internos
        9. #[doc(hidden)]
        10. #[path]
        11. include!
        12. include_bytes!
        13. include_str!
        14. build.rs para generar código
        15. OUT_DIR y artefactos generados
        16. cfg(feature = "...")
        17. cfg(target_os = "...")
        18. cfg(test)
        19. Tests de integración en tests/
        20. Ejemplos en examples/
      7. Logging
        1. Crate log
        2. Macros info!, warn!, error!, debug!, trace!
        3. Backends (env_logger, fern, tracing)
        4. Niveles de log
        5. Filtros de log por módulo
        6. Logging estructurado con tracing
        7. tracing::span y tracing::instrument
        8. Exportar logs a JSON
        9. Logs en aplicaciones CLI
        10. Logs en servicios async
        11. Logs en entornos no_std (semihosting / ITM)
        12. Rotación de logs (crates externos)
        13. Formato con timestamps
        14. Integración con observabilidad
        15. Uso de log en librerías reutilizables
      8. Documentación
        1. Comentarios ///
        2. Comentarios //! a nivel de crate o módulo
        3. Ejemplos en documentación
        4. cargo doc
        5. cargo doc --open
        6. Documentación pública mínima
        7. #[doc(hidden)]
        8. #[deny(missing_docs)]
        9. Mostrar ejemplos que compilan
        10. Ejecución de ejemplos como tests doctest
        11. Documentar invariantes de seguridad
        12. Documentar unsafe
        13. Documentar lifetimes y ownership
        14. Documentar errores (Result)
        15. Políticas de versionado semántico en docs
        16. Guías de “cómo usar” en módulos raíz
        17. Ejemplos por feature flag
        18. Docs generadas para crates internos
        19. Publicación de docs en hosting estático
        20. Documentación interna vs externa
      9. Testing
        1. #[test]
        2. cargo test
        3. Tests de unidad
        4. Tests de integración (tests/)
        5. Tests de documentación (doctests)
        6. assert!
        7. assert_eq!
        8. assert_ne!
        9. matches!
        10. should_panic
        11. Tests con Result<(), E>
        12. Tests async con runtimes (#[tokio::test])
        13. Tests parametrizados (macros de terceros)
        14. Fixtures simuladas manualmente
        15. tempfile para tests con disco
        16. Pruebas con proptest (property-based testing)
        17. Pruebas fuzzing (cargo fuzz)
        18. Pruebas de snapshot (insta)
        19. Pruebas de rendimiento (criterion)
        20. Cobertura de código (cargo tarpaulin)
        21. #[cfg(test)] secciones privadas de prueba
        22. Tests de concurrencia y race conditions
        23. Tests de integración multinodo / multi-hilo
        24. Mocking de dependencias (crates mockall, etc.)
        25. Simulación de redes con sockets falsos
        26. Tests deterministas de tiempo (fake_time)
        27. Tests con canal mpsc local
        28. Tests que validan Send + Sync
        29. Tests de unsafe correctness
        30. Validación de invariantes de memoria
      10. Depuración
      11. dbg! macro
      12. println! debug
      13. Debug derivado (#[derive(Debug)])
      14. Revisar panic backtraces (RUST_BACKTRACE=1)
      15. gdb
      16. lldb
      17. Depuración con VS Code (CodeLLDB)
      18. Breakpoints en código Rust
      19. Inspección de variables y lifetimes
      20. Desensamblado de código generado
      21. Inspección de ensamblador (rustc --emit asm)
      22. Inspección de MIR (rustc --emit mir, nightly)
      23. Inspección de LLVM IR (--emit llvm-ir)
      24. Validación de alineación de punteros
      25. Detección de UB potencial usando miri
      26. Análisis con sanitizers (ASan, UBSan)
      27. Chequeo de data races con ThreadSanitizer
      28. Validación de límites con AddressSanitizer
      29. Depuración de bloqueo mutuo (deadlock)
      30. Depuración de rendimiento con perf
      31. Flamegraphs
      32. Inspección de heap con herramientas externas
      33. Registros de tracing con tracing + tokio-console
      34. Pruebas de estrés para reproducir condiciones de carrera
      35. Auditoría manual de unsafe
    5. Estructuras avanzadas y programación funcional
      1. Programación Funcional y Estilo Declarativo
        1. Rust como lenguaje orientado a expresiones
        2. Expresiones en lugar de sentencias
        3. Cierres (|...| ...)
        4. Inmutabilidad preferida
        5. map, filter, fold
        6. flat_map
        7. Composición con iteradores
        8. Option como mónada de presencia/ausencia
        9. Result como mónada de éxito/error
        10. Encadenamiento con and_then
        11. Encadenamiento con map_err
        12. Control de flujo sin panic
        13. Early returns con ?
        14. if let como destructuración parcial
        15. match como eliminación exhaustiva de casos
        16. match anidado para composición de lógica
        17. let else para validaciones
        18. Uso de From / Into para componer transformaciones
        19. Tipos de dominio con invariantes fuertes
        20. Errores tipados en lugar de excepciones
      2. Iteradores / Adaptadores / Streams
        1. Iterator trait
        2. Adaptadores estándar (map, filter, take, skip, enumerate)
        3. Adaptadores de flattening (flat_map, flatten)
        4. Adaptadores de búsqueda (find, position, rposition)
        5. Adaptadores de acumulación (fold, scan)
        6. Adaptadores de partición (partition, group_by con crates externos)
        7. Iteradores infinitos (repeat, successors)
        8. Iteradores sobre Result
        9. try_fold
        10. Paralelización con rayon::prelude::*
        11. Iteradores paralelos (par_iter, par_chunks)
        12. Recolección en Vec, HashMap, BTreeMap
        13. Iteradores mutables (iter_mut)
        14. Iteradores que consumen (into_iter)
        15. Iteradores sobre referencias (iter)
        16. Iteradores sobre slices (slice::Chunks, ChunksExact)
        17. Iteradores de archivos línea a línea
        18. Iteradores de sockets TCP
        19. Stream en async (futures::stream)
        20. Combinadores async (stream::map, stream::buffer_unordered)
      3. Punteros Inteligentes y Mutabilidad Interior
        1. Box<T>
        2. Rc<T>
        3. Arc<T>
        4. Cell<T>
        5. RefCell<T>
        6. Mutex<T>
        7. RwLock<T>
        8. AtomicBool, AtomicUsize, AtomicPtr
        9. Arc<Mutex<T>>
        10. Arc<RwLock<T>>
        11. OnceCell<T>
        12. LazyLock<T>
        13. Weak<T>
        14. Ciclos con Rc y fuga de memoria lógica
        15. Romper ciclos con Weak
        16. Interior mutability patterns
        17. Single-thread vs multi-thread (Rc vs Arc)
        18. Envolturas seguras para FFI
        19. Gestión de recursos externos (file handles, sockets)
        20. RAII con Drop
      4. Benchmarking y Perfilado
        1. cargo bench
        2. Crate criterion para benchmarks estadísticos
        3. Microbenchmarks de funciones puras
        4. Benchmarks con acceso a disco
        5. Benchmarks de red
        6. Perfiles de CPU con perf
        7. Perfiles de CPU con dtrace / eBPF
        8. Flamegraphs
        9. Análisis de asignaciones con valgrind / heaptrack
        10. Instrumentación manual con timestamps (Instant::now)
        11. Contadores internos de rendimiento
        12. Benchmarks de throughput vs latency
        13. Impacto de clone en hot paths
        14. Reducción de alloc en loops críticos
        15. Caches locales (HashMap interno)
        16. Inlining agresivo (#[inline(always)])
        17. Branch prediction hints (patrones de if likely usando crates externos)
        18. Mediciones en modo --release
        19. Evitar TLE bloqueando IO
        20. Ensamblador generado (rustc --emit asm)
      5. Herramientas de Calidad de Código
        1. rustfmt para formateo automático
        2. clippy para lints
        3. cargo clippy --fix
        4. Lints de estilo
        5. Lints de rendimiento
        6. Lints de correctitud
        7. Lints de seguridad (uso de unsafe)
        8. Lints de complejidad
        9. Reglas internas de equipos (#![deny(warnings)])
        10. Revisiones de unsafe en PRs
        11. Auditorías de unsafe en librerías públicas
        12. Control de deuda técnica
        13. cargo deny para licencias y vulnerabilidades
        14. cargo audit para CVEs
        15. cargo udeps para dependencias no usadas
        16. cargo outdated para versiones antiguas
        17. cargo machete / cargo trim (limpieza de dependencias)
        18. Políticas de versión mínima soportada (MSRV)
        19. Análisis estático adicional con sanitizers
        20. Integración en CI (rustfmt --check, clippy -- -D warnings)
      6. Seguridad de Memoria y Concurrencia
        1. Ausencia de null en tipos seguros (Option<T>)
        2. Ausencia de use after free bajo safe Rust
        3. Propiedad y lifetimes como contrato de seguridad
        4. Send
        5. Sync
        6. Send + Sync en tipos concurrentes
        7. Arc<Mutex<T>> para compartir estado
        8. RwLock para lecturas concurrentes
        9. Canales MPSC (std::sync::mpsc)
        10. Canales múltiples productores múltiples consumidores (crossbeam)
        11. Sincronización sin bloqueo (lock-free)
        12. Atomics (Ordering)
        13. Deadlocks y estrategias de evitación
        14. Condiciones de carrera y unsafe
        15. Problemas de memoria ABA en atomics
        16. Reglas de aliasing exclusivas
        17. &mut T como garantía de acceso exclusivo
        18. Verificación en tiempo de compilación vs runtime
        19. Compartir memoria en async sin Send (!Send futures)
        20. Minimizar unsafe en código concurrente
      7. Sistema de Tipos Avanzado
        1. Genéricos (fn foo<T>(x: T))
        2. impl Trait en retorno
        3. impl Trait en parámetros
        4. where bounds complejos
        5. Traits con tipos asociados
        6. Traits con constantes asociadas
        7. Traits con lifetimes asociados
        8. Const generics (const N: usize)
        9. Arreglos genéricos [T; N] con const N
        10. PhantomData<T>
        11. Tipos marca (marker types)
        12. ! (never type)
        13. Tipos vacíos
        14. Tipos que no pueden construirse externamente
        15. enum no exhaustivos (#[non_exhaustive])
        16. Patrones sealed trait
        17. Coherencia de traits (orphan rules)
        18. Auto traits (Send, Sync)
        19. Sized y ?Sized
        20. Trait objects y dyn Trait
        21. Subtipado con lifetimes distintas
        22. Higher-Rank Trait Bounds (HRTB, for<'a>)
        23. Fn, FnMut, FnOnce
        24. Unpin
        25. Pin<P>
        26. Drop
        27. ManuallyDrop<T>
        28. MaybeUninit<T>
        29. Unsafe traits
        30. Límite entre safe Rust y unsafe Rust
    6. Concurrencia, Async, Bajo Nivel
      1. Async y Concurrencia
        1. Hilos (std::thread::spawn)
        2. JoinHandle
        3. move closures en threads
        4. Arc<T> para compartir datos entre hilos
        5. Mutex<T> para exclusión mutua
        6. RwLock<T> para lectura concurrente
        7. Barreras (Barrier)
        8. Canales std::sync::mpsc
        9. sync::mpsc::Sender / Receiver
        10. Canales crossbeam
        11. Canales tokio::sync::mpsc
        12. Semáforos async (tokio::sync::Semaphore)
        13. Condvar
        14. AtomicBool, AtomicUsize, etc.
        15. Fences de memoria (Ordering)
        16. Evitar data races con Send y Sync
        17. Send automático para la mayoría de tipos
        18. Tipos que no son Send
        19. Compartir file descriptors entre hilos
        20. Compartir conexiones de red
        21. Pools de hilos
        22. rayon para paralelismo de datos
        23. rayon::join
        24. par_iter
        25. Balanceo de carga de trabajo
        26. Uso de #[derive(Clone)] para handles ligeros
        27. Cancelación cooperativa entre hilos
        28. Pruebas de concurrencia
        29. Deadlock debugging
        30. Escalabilidad en CPU multinúcleo
      2. Async/await
        1. async fn
        2. async { ... } bloques
        3. await
        4. Future trait (std::future::Future)
        5. Pin
        6. Unpin
        7. Box<dyn Future<Output = T> + Send>
        8. impl Future<Output = T>
        9. Ejecutores (tokio, async-std, smol)
        10. tokio::spawn
        11. tokio::select!
        12. Canales async (tokio::sync::mpsc)
        13. Mutex async (tokio::sync::Mutex)
        14. RwLock async
        15. Temporizadores async (tokio::time::sleep)
        16. Timeouts (tokio::time::timeout)
        17. Streams async (futures::stream::Stream)
        18. Backpressure en streams async
        19. Conexiones persistentes async
        20. I/O no bloqueante (tokio::net)
        21. Sockets TCP async
        22. Sockets UDP async
        23. WebSockets async
        24. Sincronización en single-threaded runtime
        25. Send y Sync en futures
        26. !Send futures y LocalSet
        27. task::yield_now y cooperación
        28. Cancelación de tareas async
        29. Reintentos con delays exponenciales
        30. Recolección de JoinHandle async
      3. Redes y Comunicación
        1. std::net::TcpListener
        2. std::net::TcpStream
        3. std::net::UdpSocket
        4. Modo bloqueante
        5. Modo no bloqueante (set_nonblocking)
        6. Lectura/escritura con Read / Write
        7. Buffers ([u8])
        8. Gestión de errores de red (io::Result)
        9. Timeouts de socket
        10. Reintentos de conexión
        11. Serialización de mensajes (bincode, serde)
        12. Protocolos binarios personalizados
        13. HTTP cliente (reqwest)
        14. HTTP servidor (hyper, axum, warp, actix-web)
        15. WebSockets (crates externos)
        16. TLS (rustls)
        17. Certificados propios
        18. Protocolos binarios de baja latencia
        19. RPC (tonic gRPC)
        20. Streaming bidireccional
        21. Backpressure en servidores async
        22. Balanceo de carga
        23. Sharding de conexiones
        24. Pools de conexión
        25. Control de congestión a nivel de aplicación
        26. Telemetría de latencia y throughput
        27. Límite de tasa (rate limiting)
        28. Cortafuegos lógico a nivel de aplicación
        29. Instrumentación con tracing
        30. Testing de red con sockets falsos
      4. Metaprogramación
        1. Macros declarativas macro_rules!
        2. Macros con repeticiones ($()*)
        3. Macros con capturas de tokens
        4. Macros que generan código repetitivo
        5. Macros para logs (info!, debug!, trace!)
        6. Macros de aserción (assert!, assert_eq!, matches!)
        7. Procedural macros #[proc_macro]
        8. Procedural macros #[proc_macro_derive]
        9. Procedural macros #[proc_macro_attribute]
        10. Derives personalizados
        11. Generación de código en build.rs
        12. Incluir archivos externos (include_str!, include_bytes!)
        13. cfg! y macros condicionales
        14. concat!, env!, option_env!
        15. Macros para FFI
        16. Macros para DSLs internos
        17. Macros para test parametrizado
        18. Macros para tracing de rendimiento
        19. quote y syn en procedural macros
        20. Límites de macros (higiene)
      5. Gestión de Recursos y RAII
        1. RAII (Resource Acquisition Is Initialization)
        2. Drop trait
        3. Cierre automático de archivos al salir de scope
        4. Liberación de locks al salir de scope
        5. MutexGuard y RwLockReadGuard
        6. ManuallyDrop<T>
        7. MaybeUninit<T>
        8. mem::forget
        9. Smart pointers con semántica RAII
        10. scopeguard (crates externos)
        11. Patrones de cleanup garantizado
        12. Evitar fugas de memoria no deseadas
        13. Control de recursos FFI
        14. Contadores de referencia (Rc, Arc)
        15. Descriptores de archivo y RAII
        16. Sockets y RAII
        17. Mutexes y RAII
        18. Buffers mmap y RAII
        19. Transacciones y RAII
        20. Tareas async abortables con RAII
      6. Monitoreo y Observabilidad
        1. tracing crate
        2. Spans y eventos
        3. #[instrument]
        4. Métricas de latencia
        5. Métricas de throughput
        6. Métricas de error rate
        7. Exportadores de métricas (Prometheus, etc.)
        8. Muestreo de eventos de alto volumen
        9. Logging estructurado en JSON
        10. Correlación de requests distribuidos
        11. Propagación de contexto en async
        12. Inicio y fin de span por request
        13. Identificadores de request
        14. Monitoreo de heap
        15. Monitoreo de file descriptors abiertos
        16. Monitoreo de latencia de syscalls
        17. Límites de memoria en contenedores
        18. Límites de CPU en contenedores
        19. Alertas y umbrales
        20. Integración con APM externos
      7. Gestión de Memoria y Bajo Nivel
        1. Ausencia de GC en Rust
        2. Propiedad y liberación determinista
        3. Stack vs heap
        4. Box<T> para heap
        5. Vec<T> como buffer dinámico
        6. String como buffer dinámico UTF-8
        7. Box<[T]> y slices en heap
        8. Box<dyn Trait>
        9. Pin<Box<T>>
        10. Pin<&mut T>
        11. Referencias crudas (*const T, *mut T)
        12. unsafe blocks
        13. unsafe fn
        14. extern "C"
        15. Layout de memoria con #[repr(C)]
        16. Acceso sin chequear a slices (get_unchecked)
        17. Eliminación manual de bounds checks
        18. Aliasing y &mut T
        19. Volátiles (ptr::read_volatile, ptr::write_volatile)
        20. MaybeUninit<T> para inicialización diferida
        21. Zero-cost abstractions
        22. Inlining y #[inline(always)]
        23. Eliminación de branching con match
        24. Control fino de panic = abort
        25. #![no_std]
        26. Usar core en entornos embebidos
        27. Arranque bare-metal (#[no_main])
        28. Interrupciones en microcontroladores (#[interrupt])
        29. Memoria compartida en ISR
        30. unsafe encapsulado en HALs embebidos
    7. Implementación y Distribución
      1. Herramientas Generales del Entorno
        1. rustup para toolchains
        2. cargo como orquestador
        3. rustc como compilador
        4. rustfmt para formato
        5. clippy para lints
        6. cargo audit para seguridad
        7. cargo deny para licencias
        8. cargo outdated para actualizar versiones
        9. cargo udeps para limpiar dependencias
        10. cargo tree para inspección de dependencias
        11. cargo metadata para tooling externo
        12. cargo watch para recarga en caliente
        13. just / make para automatización
        14. Scripts build.rs
        15. rust-toolchain.toml para fijar versión
        16. Cachés de compilación incremental
        17. Perfiles dev/release
        18. lto (link-time optimization)
        19. panic = abort para binarios pequeños
        20. strip de símbolos en binarios finales
        21. RUSTFLAGS personalizados
        22. Cross-compiling con --target
        23. cross (herramienta de cross-compiling)
        24. Integración con Docker
        25. Integración con Bazel / Buck (cuando aplica)
        26. Integración con Nix
        27. Integración con CI (GitHub Actions, etc.)
        28. Reproducibilidad binaria
        29. Firmas criptográficas de binarios
        30. Publicación interna de artefactos
      2. Compilación y Backends
        1. rustc
        2. MIR (Mid-level IR)
        3. LLVM IR
        4. Generación de código máquina
        5. Optimizaciones de LLVM
        6. -C opt-level
        7. -C target-cpu
        8. -C target-feature
        9. -C lto
        10. -C panic=abort
        11. -C relocation-model
        12. -C code-model
        13. -C inline-threshold
        14. -C link-args
        15. Compilación incremental
        16. Cache de incrustaciones (incr comp cache)
        17. Reutilización de artefactos en CI
        18. Compilación cruzada ARM / RISC-V
        19. WASM como objetivo (wasm32-unknown-unknown)
        20. wasm32-wasi
        21. Generación de librerías dinámicas (cdylib)
        22. Generación de librerías estáticas (staticlib)
        23. Binarios independientes (musl)
        24. Minimización de tamaño (opt-level = "z")
        25. Embedded no_std sin sistema operativo
        26. build-std para targets custom
        27. Xargo / cargo para compilación de core personalizada
        28. bindgen para generar bindings C
        29. cbindgen para exponer APIs C
        30. Versionado del compilador requerido (MSRV)
      3. Publicación y Versionado de Crates
        1. Cargo.toml con [package]
        2. name, version, edition
        3. authors / license
        4. readme
        5. repository
        6. documentation
        7. homepage
        8. keywords
        9. categories
        10. include / exclude
        11. features
        12. default-features
        13. optional = true
        14. cargo publish
        15. cargo yank
        16. SemVer para crates (MAJOR.MINOR.PATCH)
        17. breaking changes y bump mayor
        18. Compatibilidad semántica en librerías públicas
        19. Compatibilidad binaria de cdylib
        20. Versiones mínimas soportadas (MSRV en README)
        21. Changelogs y CHANGELOG.md
        22. cargo-release para automatizar versiones
        23. Firmar tags y releases
        24. Auditoría de licencias con cargo deny
        25. Auditoría de CVEs con cargo audit
        26. Políticas internas de seguridad
        27. Soporte de plataforma declarado (targets)
        28. Estados experimentales (unstable, nightly-only)
        29. Exponer #[cfg(feature = "foo")] en docs
        30. Estabilidad de APIs unsafe
      4. Aplicaciones CLI
        1. Crates clap, argh, structopt
        2. Parsing de argumentos
        3. Subcomandos
        4. Flags y opciones
        5. Validación de input
        6. --help y --version
        7. Autogeneración de ayuda
        8. Autocompletado de shell
        9. Colores y estilos (ansi_term, colored)
        10. Barras de progreso (indicatif)
        11. println! y salida estándar
        12. eprintln! y error estándar
        13. Códigos de salida (std::process::exit)
        14. Logging configurable por flag (-v, -q)
        15. Uso de anyhow o eyre en CLI
        16. Serialización de salida (serde_json)
        17. Interactivo en terminal (prompt)
        18. TUI (crossterm, ratatui)
        19. Tests de CLI vía assert_cmd
        20. Empaquetado estático
        21. Distribución en contenedores
        22. Binarios multiplataforma
        23. Firmas de binario y checksum
        24. Versionamiento semántico del binario
        25. Compatibilidad hacia atrás en flags CLI
        26. Integración con systemd / servicios
        27. Configuración vía archivos (toml, yaml)
        28. Variables de entorno (std::env)
        29. Actualización automática (self-update)
        30. Publicación en gestores de paquetes
      5. Aplicaciones Gráficas y de Escritorio
        1. egui
        2. iced
        3. gtk-rs
        4. winit
        5. Motores de juego (bevy)
        6. Renderizado con wgpu
        7. UIs nativas vs webview
        8. Empaquetado multiplataforma
        9. Integración con aceleración GPU
        10. Eventos y loop principal
        11. Recursos compartidos entre hilos UI
        12. Canales de comunicación UI ↔ lógica
        13. Serialización de estado UI
        14. Persistencia de preferencias
        15. Integración con sistemas de archivos
        16. Control de DPI y escalamiento
        17. Integración con backends audio
        18. Janelas múltiples
        19. Controladores de input (teclado, mouse, gamepad)
        20. Soporte de internacionalización en UI
        21. Empaquetado tipo instalador
        22. Firmado de binarios en macOS/Windows
        23. Sandboxing y permisos
        24. Notificaciones del sistema
        25. Integración con portapapeles
        26. Arrastrar y soltar
        27. Actualización auto-generada (autoupdater)
        28. Integración con WebAssembly para componentes
        29. Reutilización de lógica Rust en frontend web
        30. Herramientas de depuración visual
      6. Internacionalización (i18n) y Localización (l10n)
        1. Soporte de Unicode en String
        2. Formato localizado de números y fechas (crates externos)
        3. Carga de catálogos de traducción
        4. Selección dinámica de idioma
        5. Separación de recursos por locale
        6. Plantillas de mensajes parametrizados
        7. Integración de i18n en CLI
        8. Integración de i18n en GUI
        9. Internacionalización en aplicaciones web (axum, actix)
        10. Mensajes de error traducibles
        11. Recursos de texto estáticos empaquetados (include_str!)
        12. Detección de locale del sistema
        13. Pluralización y reglas gramaticales
        14. Formato de monedas y unidades
        15. Localización offline en binarios estáticos
        16. Actualización de catálogos sin recompilar
        17. no_std y mensajería mínima
        18. i18n en firmware embebido (pantallas pequeñas)
        19. Soporte RTL (right-to-left)
        20. Compatibilidad con estándares gettext
        21. Convenciones culturales en fechas/hora
        22. Adaptación de layouts UI a idiomas
        23. Internacionalización de documentación pública
        24. Mantenimiento de catálogos en repositorios
        25. Tests que validan traducciones
        26. Versionado de recursos lingüísticos
        27. Seguridad frente a inyección en plantillas traducibles
        28. Selección de idioma vía variables de entorno
        29. Fallbacks de idioma
        30. Integración con pipelines de CI para i18n
    8. Internals
      1. Compilador de Rust (rustc)
        1. Fases del compilador
        2. Parseo del código fuente
        3. Árvore de sintaxis (AST)
        4. AST desugaring
        5. HIR (High-level IR)
        6. MIR (Mid-level IR)
        7. Borrow checker
        8. Inferencia de lifetimes
        9. Resolución de tipos
        10. Monomorfización de genéricos
        11. Optimización en MIR
        12. Traducción a LLVM IR
        13. Optimizaciones de LLVM
        14. Generación de código máquina final
        15. Enlazado (linking)
        16. rustc --emit
        17. rustc --emit=mir (nightly)
        18. rustc --emit=llvm-ir
        19. rustc --emit=asm
        20. Control de lint con #![deny], #![warn]
        21. #[inline] y sugerencias de optimización
        22. #[cold] para rutas raras
        23. #[must_use] para resultados críticos
        24. #[repr(C)] para FFI estable
        25. #[no_mangle] para símbolos exportados
        26. #[link(name = "...")]
        27. Driver de compilación en cargo
        28. Caches de compilación incremental
        29. Hashes de contenido para recompilación selectiva
        30. Flags de depuración y symbols (-g)
      2. Modelo de Ejecución
        1. Binarios nativos
        2. Librerías dinámicas (cdylib)
        3. Librerías estáticas (staticlib)
        4. Binarios estáticos (musl)
        5. WASM (wasm32-unknown-unknown)
        6. WASI (wasm32-wasi)
        7. no_std en entornos bare-metal
        8. #[no_main] para runtime propio
        9. Punto de entrada fn main()
        10. panic! como abort o unwind
        11. panic = abort en Cargo.toml
        12. panic = unwind
        13. Stack unwinding y catch_unwind
        14. Manejadores panic::set_hook
        15. Inicialización estática
        16. Orden de static init
        17. Finalización a través de Drop
        18. RAII para cleanup determinista
        19. Drop en cascada
        20. Threads del sistema operativo (std::thread)
        21. Futures y ejecutores async en espacio de usuario
        22. Pools de hilos vs loops event-driven
        23. Bloqueo vs no-bloqueo en I/O
        24. Programación lock-free
        25. Exclusión mutua con Mutex
        26. RwLock para acceso paralelo de solo lectura
        27. Atomics y órdenes de memoria
        28. Volátil para MMIO
        29. Interacciones con señales del SO
        30. Integración con FFI de C en runtime
      3. Modelo de Datos
        1. Representación en memoria de structs
        2. #[repr(Rust)] por defecto
        3. #[repr(C)] para compatibilidad ABI con C
        4. #[repr(packed)]
        5. #[repr(transparent)]
        6. Orden y alineación de campos
        7. Enum layout optimizado (Option<&T> sin overhead)
        8. Nichos de valores no usados (niche optimization)
        9. Box<T> como puntero único a heap
        10. Rc<T> con conteo de referencias single-thread
        11. Arc<T> con conteo de referencias thread-safe
        12. Cell<T> y RefCell<T> para mutabilidad interior
        13. UnsafeCell<T> como primitiva base de interior mutability
        14. Zonas exclusivas de referencia mutable (&mut T)
        15. Reglas de aliasing en borrow checker
        16. Send para traspaso seguro entre hilos
        17. Sync para acceso compartido seguro
        18. Unpin y movimiento seguro de futures
        19. Pin<&mut T>
        20. MaybeUninit<T> para inicialización manual
        21. ManuallyDrop<T> para controlar Drop
        22. Propiedad lineal como contrato estático
        23. Ciclos de referencia con Rc
        24. Weak<T> para romper ciclos
        25. Fugas de memoria intencionales (leak)
        26. Layout de closures y capturas
        27. dyn Trait y fat pointers (puntero + vtable)
        28. Llamadas virtuales vía vtable
        29. #[inline] y monomorfización en genéricos
        30. Eliminación de código muerto en monomorfización
      4. Modelo C y FFI
        1. extern "C" en funciones
        2. #[no_mangle] para nombres estables
        3. #[repr(C)] en structs para FFI
        4. Punteros crudos (*const T, *mut T)
        5. unsafe en llamadas FFI
        6. Traducción de enum a C
        7. Strings CString
        8. CStr
        9. Buffers *mut u8
        10. Longitud y ownership cruzando la frontera FFI
        11. Callbacks desde C hacia Rust
        12. Callbacks de Rust hacia C
        13. ABI estable entre Rust y C
        14. ABI entre Rust y C++
        15. bindgen para generar bindings desde headers C
        16. cbindgen para exponer headers C desde Rust
        17. Reglas de seguridad al exponer punteros
        18. Gestión de memoria compartida con librerías C
        19. #[link(name = "...")]
        20. #[link(kind = "static")]
        21. #[link(kind = "dylib")]
        22. Cargar librerías dinámicas en runtime
        23. Paso de structs complejos a C
        24. Paso de callbacks con extern "C" fn
        25. Manejo de errores en FFI (errno, códigos de error)
        26. Invariantes documentadas en funciones unsafe
        27. Pruebas de integración con librerías C existentes
        28. Construcción cruzada para plataformas embebidas
        29. Integración con kernels / drivers
        30. no_std y FFI en firmware
      5. Extensiones y Casos Especiales
        1. no_std y entornos sin sistema operativo
        2. Sistemas embebidos ARM Cortex-M
        3. RISC-V embebido
        4. Mapeo de registros de hardware con volatile
        5. Interrupciones (#[interrupt])
        6. Bootloaders en Rust
        7. Sistemas operativos escritos en Rust
        8. Kernels monolíticos vs microkernels en Rust
        9. Drivers de dispositivo en Rust
        10. Controladores de red en Rust
        11. Librerías criptográficas sin std
        12. Criptografía con no_std
        13. Randomness seguro (rand_core)
        14. #![forbid(unsafe_code)] en capas superiores
        15. unsafe encapsulado en HALs
        16. WebAssembly (wasm32-unknown-unknown)
        17. WASI (wasm32-wasi)
        18. Llamadas host ↔ WASM
        19. Limitaciones de asignador en WASM
        20. Serialización compacta para WASM
        21. Portado de lógica Rust a frontend web
        22. Reutilización de core logic en CLI y servidor
        23. Reutilización de lógica en microcontroladores
        24. Estrategias para panic en entornos sin stdout
        25. panic-halt y panic-abort
        26. Arranque seguro y watchdog
        27. Integridad de memoria en dispositivos críticos
        28. Certificación de software seguro
        29. Política de revisiones de unsafe
        30. Evolución futura del lenguaje, del borrow checker y de async nativo