🎯 Tipo String no Rust

Em poucas palavras

Definição técnica ou simplificada do conceito.


📝 Notas e Desenvolvimento


🔗 Conexões e Contexto


📚 Referências e Fontes

Citações Diretas

📂 Outros Conteúdos Preservados

Memória e Alocação com String

Para que String suporte texto mutável e redimensionável, ela precisa solicitar memória do alocador de memória do sistema em tempo de execução. Essa memória é alocada na heap.

O aspecto crucial do tipo String de Rust (e outros tipos alocados na heap) é como ele lida com a desalocação de memória. Ao contrário de linguagens com coletores de lixo (GCs) que limpam automaticamente a memória não utilizada, ou linguagens que exigem liberação manual de memória, Rust adota uma abordagem diferente: Rust retorna automaticamente a memória usada por uma String ao alocador assim que a variável que a “possui” sai do escopo.

Considere este exemplo:

{
    let s = String::from("hello"); // 's' is valid and its data is on the heap
	// You can use 's' here
}   // This scope is now over.
    // Rust automatically deallocates the memory
    // associated with 's' on the heap.

Quando uma variável String sai do escopo, Rust chama automaticamente uma função especial chamada drop. A função drop é onde o código para liberar a memória alocada é colocado. Isso garante que a memória seja consistente e automaticamente retornada ao sistema, prevenindo bugs comuns relacionados à memória, como esquecer de liberar memória ou liberá-la várias vezes. Esse padrão é fundamental para o sistema de propriedade de Rust e suas garantias de segurança de memória.