📊 Capítulo 14: Closures & Estilo Funcional
Especialização em Sistemas com Rust
🗺️ As Três Traits de Captura de Closures
flowchart TD
CLOSURE["Closure: |arg| { ... }"]
--> CAPTURE{"Como a closure interage com as variáveis do ambiente externo?"}
CAPTURE --> |"Apenas Lê (&T)"| FN["Fn (Pode ser chamada infinitas vezes simultaneamente)"]
CAPTURE --> |"Modifica (&mut T)"| FNMUT["FnMut (Pode ser chamada alterando seu estado interno)"]
CAPTURE --> |"Consome / Move (T)"| FNONCE["FnOnce (Consome o dado capturado, pode ser chamada apenas 1 vez!)"]
style CLOSURE fill:#ede7f6,stroke:#512da8,stroke-width:2px
style CAPTURE fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style FN fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style FNMUT fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style FNONCE fill:#ffebee,stroke:#d32f2f,stroke-width:2px
🎯 Slide 1: Sintaxe de Closures em Rust
let somar_um = |x: i32| -> i32 { x + 1 };
let duplicar = |x| x * 2; // Inferência automática de tipos!
🎯 Slide 2: A Palavra-Chave move
let texto = String::from("thread");
let handle = std::thread::spawn(move || {
// move força a closure a tomar posse de 'texto' para transferir para a nova thread!
println!("Na thread: {}", texto);
});
🎯 Slide 3: Combinadores Funcionais em Option e Result
-
.map(|v| ...): Transforma o valor interno se forSome/Ok. -
.and_then(|v| ...): Encadeia operações que retornam outroOption/Result(FlatMap). .unwrap_or_else(|| ...): Fornece valor padrão preguiçoso (lazy).
🔗 Navegação do Capítulo 14
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim