📊 Capítulo 12: Coleções & Iteradores Zero-Cost
Especialização em Sistemas com Rust
🗺️ O Pipeline Funcional dos Iteradores do Rust
flowchart LR
COLECAO["Vec<i32> na Memória"]
--> INTO_ITER["iter() / into_iter()"]
--> MAP["map(|x| x * 2) (Lazy / Preguiçoso)"]
--> FILTER["filter(|x| x > 10) (Lazy)"]
--> COLLECT["collect::<Vec<_>>() (Consumidor Terminal / Loop Compilado em Assembly!)"]
style COLECAO fill:#ede7f6,stroke:#512da8,stroke-width:2px
style INTO_ITER fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style MAP fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style FILTER fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style COLLECT fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Coleções Padrão Essenciais
-
HashMap<K, V>: Tabela hash rápida baseada em SipHash (proteção contra HashDOS). -
BTreeMap<K, V>: Mapa ordenado baseado em árvore B (excelente para iteração em ordem). -
VecDeque<T>: Fila de duas pontas com inserção/remoção $O(1)$ no início e no fim. HashSet<T>/BTreeSet<T>: Conjuntos para unicidade e operações de união/interseção.
🎯 Slide 2: A API Entry do HashMap (Super Idiomática)
use std::collections::HashMap;
let mut contagens = HashMap::new();
let texto = "rust systems programming with rust";
for palavra in texto.split_whitespace() {
contagens.entry(palavra).and_modify(|c| *c += 1).or_insert(1);
}
🎯 Slide 3: Por Que Iteradores São Zero-Cost?
- Os adaptadores (
map,filter,fold) são Lazy e sofrem inlining completo pelo compilador LLVM, gerando código de máquina idêntico ou até mais rápido que um loopforescrito manualmente!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim