Menu
Coddy logo textTech

String vs. &str

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 54 de 66.

Rust possui dois tipos principais de strings que servem a propósitos diferentes: String e &str. Entender a diferença entre eles é crucial para trabalhar de forma eficaz com texto em Rust.

Uma String é uma string de propriedade (owned), alocada na heap, que você pode modificar. Quando você cria uma String, seu programa detém a propriedade desses dados e é responsável por gerenciar sua memória. Você pode aumentá-la, diminuí-la e alterar seu conteúdo porque ela é mutável quando declarada com mut.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Isso funciona porque a String possui propriedade e é mutável

Em contraste, &str (pronunciado "string slice") é uma visão emprestada e imutável de dados de string. Ele não é o dono dos dados para os quais aponta - é apenas uma referência a algum conteúdo de string que existe em outro lugar. Literais de string como "Hello" são, na verdade, do tipo &str.

let my_slice: &str = "Hello World"; // Isso é um slice de string

Pense no String como ser o dono de um livro no qual você pode escrever e modificar, enquanto o &str é como pegar o livro de outra pessoa emprestado - você pode lê-lo, mas não pode alterá-lo. Essa distinção é fundamental para o sistema de ownership do Rust e ajuda a garantir a segurança de memória.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow