📊 Capítulo 03: Controle de Fluxo & Loops
Especialização em Sistemas com Rust
🗺️ As Estruturas de Repetição do Rust
flowchart TD
FLOW{"Decisão de Fluxo"}
FLOW --> |"if / else"| IF_EXPR["Expressão if let / if normal (Retorna valor!)"]
FLOW --> |"loop"| LOOP_INF["loop infinito (Pode retornar valor com break)"]
FLOW --> |"while"| WHILE_LOOP["while condicao (Executa enquanto verdadeiro)"]
FLOW --> |"for in"| FOR_ITER["for item in colecao.iter() (Seguro e sem index out of bounds)"]
style FLOW fill:#ede7f6,stroke:#512da8,stroke-width:2px
style IF_EXPR fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style LOOP_INF fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style WHILE_LOOP fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style FOR_ITER fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
🎯 Slide 1: if como Expressão que Retorna Valor
- Em Rust,
ifé uma expressão e não uma declaração (dispensa operador ternário):let condicao = true; let numero = if condicao { 5 } else { 10 }; // Tipos dos blocos devem ser idênticos!
🎯 Slide 2: Retornando Valores de Loops com break
let mut contador = 0;
let resultado = loop {
contador += 1;
if contador == 10 {
break contador * 2; // Retorna 20 diretamente para a variável!
}
};
- Rótulos de Loops (Loop Labels): Permitem quebrar loops externos aninhados (
break 'externo;).
🎯 Slide 3: O Loop for Idiomático & Seguro
-
Sem Índices Manuais: O loop
for item in &colecaoelimina completamente o risco de erros Off-by-One e Buffer Overflow. - Iteração com Ranges:
for n in 1..=5 { println!("{}", n); }(Imprime de 1 a 5).
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim