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ávelEm 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 stringPense 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.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Folha de consulta
Rust possui dois tipos principais de string:
String- string de posse (owned), alocada na heap e mutável&str- fatia de string emprestada (borrowed) e imutável (referência a dados de string)
Criando uma String:
let mut my_string = String::from("Hello");
my_string.push_str(" World");Literais de string são do tipo &str:
let my_slice: &str = "Hello World";A String é dona de seus dados e pode ser modificada, enquanto &str é uma referência que não pode ser alterada.
Experimente você mesmo
Esta lição não inclui um desafio de código.
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
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final6Lidando com a Ausência com 'Option'
O que é um 'Option'?Usando 'match' com 'Option'is_some() e is_none()Fazendo o unwrap de um 'Option'O método expectFornecendo um valor padrão: unwrap_orRecapitulação - Encontrar um Elemento9Slices de String e Mais
String vs. &strCriando Slices de StringSlices como Parâmetros de FunçãoOutros SlicesRecapitulação - Encontrar a Primeira Palavra