Capítulo 07: Strings (Cadeias de Caracteres) 🐺⚔️

Neste capítulo, vamos aprender a trabalhar com textos no Rust, que possui dois tipos principais de strings, com o tema The Witcher!


📖 O que são Strings em Rust?

No Rust, strings são um pouco diferentes de outras linguagens. Temos dois tipos principais:

  1. String: Um texto que pode crescer, muda de tamanho e fica na memória Heap.
  2. &str (String Slice): Uma referência a um texto (geralmente imutável). Os textos que escrevemos diretamente entre aspas são desse tipo!

📖 Exemplo Guiado: Nome do Bruxo

Vamos aprender a declarar uma string do tipo String e concatenar (juntar) textos!

  1. Crie o arquivo nome_bruxo.rs na pasta src/:
fn main() {
    // Criando uma String que pode mudar de tamanho
    let mut nome = String::from("Geralt");
 
    println!("Bruxo original: {}", nome);
 
    // Adicionando texto (concatenando)
    nome.push_str(" de Rivia");
 
    println!("Nome completo: {}", nome);
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: rustc nome_bruxo.rs
  3. Execute: ./nome_bruxo

Resultado Esperado:

Bruxo original: Geralt
Nome completo: Geralt de Rivia

📊 Ilustração Visual: String vs Slice

Veja como a memória é organizada:

graph LR
    subgraph "String (Heap)"
    A["'G','e','r','a','l','t'"]
    end
    subgraph "&str (Slice)"
    B["Aponta para os dados na Heap"]
    end
    B --> A

🛠️ Prática Obrigatória 1: Grito de Guerra

Crie um programa chamado grito_guerra.rs que crie uma String vazia (use String::new()). Peça ao usuário para digitar uma palavra (ou use uma variável fixa para simplificar) e adicione essa palavra à string repetidas vezes para formar um grito de guerra (ex: “Haa! Haa! Haa!”).


🔑 Gabarito de Código

Prática 1: grito_guerra.rs

fn main() {
    let mut grito = String::new();
    let palavra = "Haa! ";
 
    for _ in 0..3 {
        grito.push_str(palavra);
    }
 
    println!("Grito de Guerra: {}", grito.trim());
}

Capitulo Anterior | Proximo Capitulo