
Unsafe Rust
Blocos unsafe, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), invariantes de safety
1Qual palavra-chave habilita os superpoderes do modo unsafe em Rust?
Qual palavra-chave habilita os superpoderes do modo unsafe em Rust?
Resposta
A palavra-chave unsafe desbloqueia cinco capacidades proibidas no safe Rust: desreferenciar raw pointers, chamar funções unsafe, acessar variáveis estáticas mutáveis, implementar unsafe traits e acessar campos de unions. Esse bloco sinaliza ao compilador que o desenvolvedor assume a responsabilidade de garantir a memory safety.
2Quantas capacidades adicionais o código unsafe libera em comparação com o safe Rust?
Quantas capacidades adicionais o código unsafe libera em comparação com o safe Rust?
Resposta
O modo unsafe libera exatamente cinco capacidades: desreferenciar raw pointers, chamar funções ou métodos unsafe, acessar ou modificar variáveis mutáveis estáticas, implementar traits unsafe e acessar os campos de unions. Essas cinco operações são as únicas diferenças entre safe e unsafe Rust.
3Qual é a sintaxe correta para criar um raw pointer imutável para uma variável em Rust?
Qual é a sintaxe correta para criar um raw pointer imutável para uma variável em Rust?
Resposta
A sintaxe para criar um raw pointer imutável é let ptr = &x as *const T. O tipo *const T representa um raw pointer imutável. Criar raw pointers é safe, somente o deref exige um bloco unsafe. Também é possível usar a coerção implícita com let ptr: *const T = &x.
Qual é a diferença entre *const T e *mut T em Rust?
Por que criar raw pointers é permitido em safe Rust enquanto desreferenciá-los não é?
+17 perguntas de entrevista
Outros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Tratamento de erros
Coleções
Módulos e Pacotes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde e serialização
Traits avançados
Lifetimes Avançados
Type System
Tokio & Async I/O
Otimização de Desempenho
Memory Management
Web Frameworks
Database Integration
Padrões de design em Rust
Domine Rust para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis