Um tour por Rust Índice

Amigos familiares

Considere alguns ponteiros inteligentes que já vimos como Vec<T> e String.

O Vec<T> é um ponteiro inteligente que simplesmente possui uma região da memória em bytes. O compilador Rust não tem ideia do que existe nesses bytes. O ponteiro inteligente interpreta o que significa pegar os itens da região da memória que ele gerencia, mantém o controle de onde os bytes das estruturas de dados começam e terminam e, finalmente, desreferencia um ponteiro bruto para uma estrutura de dados com uma interface ergonômica, limpa e fácil para nós usarmos (por exemplo, my_vec[3]).

Da mesma forma, String mantém o controle de uma região de memória em bytes, restringe programaticamente o conteúdo escrito nele para ser sempre utf-8 válido, e ajuda a desreferenciar essa região de memória em um tipo &str.

Ambas as estruturas de dados usam desreferenciamento inseguro de ponteiros brutos para fazer seu trabalho.

Detalhes da memória: