Rust Inseguro (Unsafe)

A linguagem Rust tem duas partes:

  • Rust Seguro (Safe): memória segura, nenhum comportamento indefinido é possível.
  • Rust Inseguro (Unsafe): pode desencadear comportamento indefinido se pré-condições forem violadas.

Veremos principalmente Rust seguro neste curso, mas é importante saber o que é Rust inseguro.

Código inseguro é geralmente pequeno e isolado, e seu funcionamento correto deve ser cuidadosamente documentado. Geralmente é envolto em uma camada de abstração segura.

O código inseguro do Rust oferece acesso a cinco novos recursos:

  • Desreferenciar ponteiros brutos (raw pointers).
  • Acessar ou modificar variáveis estáticas mutáveis.
  • Acessar os campos de uma union.
  • Chamar funções unsafe (inseguras), incluindo funções extern (externas).
  • Implementar traits unsafe.

A seguir, abordaremos brevemente os recursos inseguros. Para detalhes completos, consulte o Capítulo 19.1 no Rust Book e o Rustonomicon.

This slide should take about 5 minutes.

Rust inseguro não significa que o código esteja incorreto. Significa que os desenvolvedores desligaram os recursos de segurança do compilador e precisam escrever o código corretamente por eles mesmos. Significa também que o compilador não impõe mais as regras de segurança de memória do Rust.