Mini-Projeto: Analisador de Texto Eficiente 🔍
Vamos aprender a economizar memória usando referências para analisar dados sem precisar cloná-los.
📋 Requisitos
- Imutabilidade: Uma função deve receber uma referência imutável (
&String) e contar quantas vogais existem no texto. - Mutabilidade Controlada: Uma função deve receber uma referência mutável (
&mut String) e transformar todo o texto em letras maiúsculas. - 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
- 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).