No description
Find a file
2026-08-14 07:18:23 +02:00
.woodpecker chore: migrate CI to .woodpecker/{push,branch}.yml 2026-08-14 07:18:23 +02:00
src initial content 2026-08-14 07:18:18 +02:00
tests initial content 2026-08-14 07:18:18 +02:00
.gitignore Initial commit 2026-08-14 05:17:57 +00:00
Cargo.lock initial content 2026-08-14 07:18:18 +02:00
Cargo.toml chore: declare MSRV 1.85 (edition 2024) 2026-08-14 07:18:23 +02:00
LICENSE chore: add AGPL-3.0 license and standard .gitignore 2026-08-14 07:18:23 +02:00
README.md fix: content audit corrections (accuracy, coherence, concordância, tests) 2026-08-14 07:18:23 +02:00

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ário
  • static: 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, static tem endereço único

3. Requisitos

  • Definir constantes com const
  • Identificar quando usar static em vez de const (este laboratório foca em const)
  • 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

  1. 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
  2. Implementar limite_velocidade retornando a constante
  3. Implementar nome_do_mecha usando string literal estática
  4. Implementar versao_sistema retornando versão do firmware
  5. Implementar capacidade_energia com constante de energia
  6. Implementar calcular_porcentagem usando constante de limite
  7. Implementar status_formatado combinando nome e versão do mecha em uma string formatada
  8. Implementar eh_limite_valido verificando contra limite
  9. Implementar configuracao_resumo combinando 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ção
  • static tem endereço fixo — útil para dados compartilhados
  • Use SCREAMING_SNAKE_CASE para constantes e estáticos
  • Strings literais ("texto") já são &'static str por padrão