No description
- Rust 100%
| .woodpecker | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
Lição 14: Dados Textuais (Comunicação do Mecha)
1. Narrativa
O mecha Æther precisa trocar mensagens constantemente com a base e processar sinais de texto dos seus sensores. Dados Textuais são a base da comunicação — o piloto deve dominar String e &str para manipular, concatenar e extrair informações das transmissões recebidas.
2. Conceito
Em Rust, existem dois tipos principais de texto:
String: Alocada no heap, mutável, com ownership próprio&str: Slice de string, referência imutável para dados textuais- Operações: concatenação, fatiamento, busca, substituição
- Conversão:
.to_string(),.parse(),format!()
3. Requisitos
- Criar funções que manipulam
Stringe&str - Converter entre tipos textuais
- Extrair substrings e buscar padrões
4. Design de Dados
graph LR
A[&str slice] --> B[.to_string]
B --> C[String heap]
C --> D[.as_str]
D --> A
C --> E[+ concatenar]
E --> F[String resultado]
5. Diagrama de Fluxo
flowchart TD
A[Entrada: &str] --> B{Tipo de operação}
B -->|Converter| C[.to_string]
B -->|Buscar| D[.find / .contains]
B -->|Fatiar| E[&str_slice]
B -->|Concatenar| F[format! ou +]
C --> G[Retorna String]
D --> G
E --> G
F --> G
6. Funções
| Função | Descrição |
|---|---|
inverter_texto |
Inverte os caracteres de uma string |
contar_palavras |
Conta o número de palavras no texto |
maiusculas |
Converte texto para maiúsculas |
primeiras_letras |
Retorna os N primeiros caracteres como String |
contem_padrao |
Verifica se o texto contém um padrão |
substituir_texto |
Substitui todas as ocorrências de um padrão |
juntar_com_virgula |
Concatena slice de strings com vírgulas |
remover_espacos |
Remove espaços do início e fim |
7. Exemplo
let texto = " mecha Æther online ";
let limpo = texto.trim();
let maiusculo = limpo.to_uppercase();
assert_eq!(maiusculo, "MECHA ÆTHER ONLINE");
8. Missão
- Implementar
inverter_textousando.chars().rev().collect() - Implementar
contar_palavrasusando.split_whitespace().count() - Implementar
maiusculasusando.to_uppercase() - Implementar
primeiras_letrasusando fatiamento de chars - Implementar
contem_padraousando.contains() - Implementar
substituir_textousando.replace() - Implementar
juntar_com_virgulausando.join() - Implementar
remover_espacosusando.trim().to_string()
9. Como Executar
cargo build
cargo test
cargo clippy -- -D warnings
cargo fmt --check
10. Dicas
&stré uma referência,Stringtem ownership — escolha com sabedoria- Use
.to_string()para converter&stremString - Fatiamento direto
[..n]pode quebrar caracteres Unicode — prefira.chars() .trim()remove espaços de ambas as extremidades