Um tour por Rust Índice

Código inseguro inteligente

Os ponteiros inteligentes tendem a usar código inseguro com bastante frequência. Como mencionado anteriormente, eles são ferramentas comuns para interagir com os níveis mais baixos de memória no Rust.

O que é um código inseguro? O código inseguro se comporta exatamente como Rust normal, com exceção de algumas habilidades sobre as quais o compilador Rust é incapaz de oferecer garantias.

Uma habilidade primária do código inseguro é o desreferenciamento de um ponteiro bruto. Isso significa pegar um ponteiro bruto de uma posição na memória, declarar que "há uma estrutura de dados aqui!" e transformá-lo em uma representação de dados que você pode usar (ou seja, *const u8 em u8).

O Rust não tem como rastrear o significado de cada byte que é gravado na memória. E porque o Rust não pode dar garantias sobre o que existe em um número arbitrário usado como um ponteiro bruto que ele põe o desreferenciamento em um bloco unsafe { ... }.

Ponteiros inteligentes desreferenciam ponteiros brutos extensivamente, mas são bem competentes no que fazem.