Pular para conteúdo

Mini-Projeto: Analisador de Texto Eficiente 🔍

Vamos aprender a economizar memória usando referências para analisar dados sem precisar cloná-los.

📋 Requisitos

  1. Imutabilidade: Uma função deve receber uma referência imutável (&String) e contar quantas vogais existem no texto.
  2. Mutabilidade Controlada: Uma função deve receber uma referência mutável (&mut String) e transformar todo o texto em letras maiúsculas.
  3. Segurança: Demonstre que você não pode chamar as duas funções ao mesmo tempo se as referências estiverem ativas.

🚀 Guia de Execução

  1. Implementação sugerida:
    fn contar_vogais(texto: &String) -> usize {
        texto.chars().filter(|c| "aeiouAEIOU".contains(*c)).count()
    }
    
    fn tornar_maiusculo(texto: &mut String) {
        *texto = texto.to_uppercase();
    }
    
    fn main() {
        let mut documento = String::from("Rust é fantástico");
    
        let n_vogais = contar_vogais(&documento);
        println!("Vogais encontradas: {}", n_vogais);
    
        tornar_maiusculo(&mut documento);
        println!("Documento final: {}", documento);
    }
    

✅ Critérios de Aceite

  • [ ] Uso correto dos símbolos & e &mut.
  • [ ] O programa não realiza clones desnecessários de dados.
  • [ ] As funções demonstram clareza na intenção de uso dos dados (leitura vs escrita).