
Unsafe Rust
Bloques unsafe, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), invariantes de safety
1¿Qué palabra clave habilita los superpoderes del modo unsafe en Rust?
¿Qué palabra clave habilita los superpoderes del modo unsafe en Rust?
Respuesta
La palabra clave unsafe desbloquea cinco capacidades prohibidas en safe Rust: desreferenciar raw pointers, llamar funciones unsafe, acceder a variables estáticas mutables, implementar unsafe traits y acceder a campos de unions. Este bloque le indica al compilador que el desarrollador asume la responsabilidad de garantizar la memory safety.
2¿Cuántas capacidades adicionales desbloquea el código unsafe en comparación con safe Rust?
¿Cuántas capacidades adicionales desbloquea el código unsafe en comparación con safe Rust?
Respuesta
El modo unsafe desbloquea exactamente cinco capacidades: desreferenciar raw pointers, llamar a funciones o métodos unsafe, acceder o modificar variables mutables estáticas, implementar traits unsafe y acceder a los campos de las unions. Estas cinco operaciones son las únicas diferencias entre safe y unsafe Rust.
3¿Cuál es la sintaxis correcta para crear un raw pointer inmutable hacia una variable en Rust?
¿Cuál es la sintaxis correcta para crear un raw pointer inmutable hacia una variable en Rust?
Respuesta
La sintaxis para crear un raw pointer inmutable es let ptr = &x as *const T. El tipo *const T representa un raw pointer inmutable. Crear raw pointers es safe, solo el deref requiere un bloque unsafe. También se puede usar la coerción implícita con let ptr: *const T = &x.
¿Cuál es la diferencia entre *const T y *mut T en Rust?
¿Por qué se permite crear raw pointers en safe Rust mientras que desreferenciarlos no?
+17 preguntas de entrevista
Otros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Manejo de errores
Colecciones
Módulos y Paquetes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde y serialización
Traits avanzados
Lifetimes Avanzados
Type System
Tokio & Async I/O
Optimización de Rendimiento
Memory Management
Web Frameworks
Database Integration
Patrones de diseño en Rust
Domina Rust para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis