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