No description
- Rust 100%
| .woodpecker | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
Lição 16: Configurações Globais (Parâmetros do Mecha)
1. Narrativa
O mecha Æther possui parâmetros fixos de fábrica e configurações globais que não mudam durante a missão. Constantes e valores estáticos definem limites operacionais, velocidades máximas e identificadores do sistema. Configurações Globais ensina o piloto a usar const e static corretamente.
2. Conceito
Rust oferece dois mecanismos para valores globais:
const: Valor imutável em tempo de compilação, embutido no bináriostatic: Valor com localização fixa na memória, pode ser mutável (unsafe)- Convenções: SCREAMING_SNAKE_CASE para nomes
- Diferença chave:
consté copiado em cada uso,statictem endereço único
3. Requisitos
- Definir constantes com
const - Identificar quando usar
staticem vez deconst(este laboratório foca emconst) - Criar funções que utilizam configurações globais
4. Design de Dados
graph LR
A[Código Fonte] --> B{const}
A --> C{static}
B --> D[Embutido no binário]
C --> E[Endereço fixo na memória]
D --> F[Copiado em cada uso]
E --> G[Referência única]
5. Diagrama de Fluxo
flowchart TD
A[Definir configuração] --> B{Muda em runtime?}
B -->|Nunca| C[Usar const]
B -->|Precisa de endereço| D[Usar static]
C --> E[Embutido em compilação]
D --> F[Endereço fixo na memória]
E --> G[Funções usam diretamente]
F --> G
6. Funções
| Função | Descrição |
|---|---|
limite_velocidade |
Retorna a velocidade máxima configurada |
nome_do_mecha |
Retorna o identificador do mecha |
versao_sistema |
Retorna a versão do firmware |
capacidade_energia |
Retorna a energia máxima em kWh |
calcular_porcentagem |
Calcula porcentagem baseada no limite |
status_formatado |
Retorna string de status com configurações |
eh_limite_valido |
Verifica se um valor está dentro do limite |
configuracao_resumo |
Retorna resumo numérico das configurações |
7. Exemplo
const VELOCIDADE_MAXIMA: i32 = 300;
let atual = 150;
let porcentagem = (atual * 100) / VELOCIDADE_MAXIMA;
assert_eq!(porcentagem, 50);
8. Missão
- Usar as constantes fornecidas em
src/lib.rs(VELOCIDADE_MAXIMA,NOME_MECHA,VERSAO_FIRMWARE,ENERGIA_MAXIMA) — elas já estão declaradas; sua missão é implementar as funções abaixo que as usam - Implementar
limite_velocidaderetornando a constante - Implementar
nome_do_mechausando string literal estática - Implementar
versao_sistemaretornando versão do firmware - Implementar
capacidade_energiacom constante de energia - Implementar
calcular_porcentagemusando constante de limite - Implementar
status_formatadocombinando nome e versão do mecha em uma string formatada - Implementar
eh_limite_validoverificando contra limite - Implementar
configuracao_resumocombinando constantes
9. Como Executar
cargo build
cargo test
cargo clippy -- -D warnings
cargo fmt --check
10. Dicas
consté avaliado em compilação — não pode ser resultado de funçãostatictem endereço fixo — útil para dados compartilhados- Use
SCREAMING_SNAKE_CASEpara constantes e estáticos - Strings literais (
"texto") já são&'static strpor padrão