Rust

Unsafe Rust

Blocos unsafe, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), invariantes de safety

20 perguntas de entrevista·
Senior
1

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.

2

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.

3

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.

4

Qual é a diferença entre *const T e *mut T em Rust?

5

Por que criar raw pointers é permitido em safe Rust enquanto desreferenciá-los não é?

+17 perguntas de entrevista

Domine Rust para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis