No description
- Rust 100%
| .woodpecker | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
Lição 19: Decodificação Tática (Pattern Matching)
1. Narrativa
No calor da batalha, o mecha Æther recebe sinais codificados que devem ser interpretados instantaneamente. Decodificação Tática é a arte do pattern matching — o piloto usa match para classificar sinais, decodificar comandos e tomar decisões baseadas em padrões precisos.
2. Conceito
Pattern matching é o mecanismo de decisão mais poderoso de Rust:
match: Expressão exaustiva que testa todos os padrõesif let: Pattern matching para um único padrão de interesselet else: Extrai valor ou retorna cedo- Patterns: literais, variáveis, wildcards (
_), ranges, destructuring
3. Requisitos
- Usar
matchpara classificar valores - Aplicar destructuring em enums e structs
- Utilizar guards e padrões avançados
4. Design de Dados
graph LR
A[Valor de entrada] --> B[match]
B --> C[Padrão 1]
B --> D[Padrão 2]
B --> E[Padrão N]
B --> F[Wildcard _]
C --> G[Expressão resultado]
5. Diagrama de Fluxo
flowchart TD
A[Receber sinal] --> B[match sinal]
B --> C{Padrão corresponde?}
C -->|Alerta| D[Protocolo de alerta]
C -->|Comando| E[Executar ação]
C -->|Diagnóstico| F[Analisar sistema]
C -->|Desconhecido| G[Registrar anomalia]
D --> H[Retorna ação]
E --> H
F --> H
G --> H
6. Funções
| Função | Descrição |
|---|---|
classificar_sinal |
Classifica um sinal numérico em categorias |
decodificar_comando |
Decodifica comando textual em ação |
verificar_nivel |
Verifica nível de energia (baixo/médio/alto) |
interpretar_status |
Interpreta código de status do mecha |
cor_respectiva |
Retorna cor para cada tipo de alerta |
prioridade_missao |
Classifica prioridade baseada em parâmetros |
analisar_leitura |
Analisa leitura de sensor com ranges |
filtrar_classificacao |
Classifica números em categorias |
7. Exemplo
enum Comando {
Avancar,
Recuar,
Parar,
}
fn interpretar(comando: Comando) -> &'static str {
match comando {
Comando::Avancar => "Movendo para frente",
Comando::Recuar => "Recuando",
Comando::Parar => "Parado",
}
}
// Uso:
// let acao = interpretar(Comando::Avancar);
// assert_eq!(acao, "Movendo para frente");
8. Missão
- Implementar
classificar_sinalusando match com ranges - Implementar
decodificar_comandocom match em strings - Implementar
verificar_nivelcom match em ranges numéricos - Implementar
interpretar_statuscom match em enum - Implementar
cor_respectivamapeando tipos para cores - Implementar
prioridade_missaocom match em tuplas - Implementar
analisar_leituracom match e guards - Implementar
filtrar_classificacaocategorizando números
9. Como Executar
cargo build
cargo test
cargo clippy -- -D warnings
cargo fmt --check
10. Dicas
matchdeve ser exaustivo — cobrir todos os casos possíveis- Use
_como wildcard para casos restantes - Ranges:
1..=10é inclusivo,1..10é exclusivo - Pattern matching em enums é uma das funcionalidades mais poderosas de Rust