📊 Capítulo 04: Funções & Expressões
Especialização em Sistemas com Rust
🗺️ Statements (Declarações) vs Expressions (Expressões)
flowchart LR
CODIGO["Linha de Código em Rust"]
--> TIPO{"Termina com Ponto e Vírgula (;)"}
TIPO -- "SIM" --> STMT["Statement (Declaração)\n- Executa ação\n- NÃO retorna valor (retorna ())"]
TIPO -- "NÃO" --> EXPR["Expression (Expressão)\n- Avalia para um valor\n- Retorna o dado automaticamente!"]
style CODIGO fill:#ede7f6,stroke:#512da8,stroke-width:2px
style TIPO fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style STMT fill:#ffebee,stroke:#d32f2f,stroke-width:1.5px
style EXPR fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Retorno Implícito de Funções
fn somar(a: i32, b: i32) -> i32 {
a + b // Sem ponto e vírgula = Retorno implícito idiomático!
}
- Atenção: Colocar um
;no final transforma a expressão em um statement, retornando a tupla unitária()e causando erro de compilação.
🎯 Slide 2: Blocos de Código como Expressões
let x = {
let y = 3;
y + 1 // O bloco todo avalia para 4!
};
- Permite criar escopos temporários locais sem poluir o escopo da função principal.
🎯 Slide 3: Escopo Léxico e Desalocação Automática (RAII)
-
Toda variável criada dentro de um
{ ... }vive apenas até o fechamento da chave. - Padrão RAII (Resource Acquisition Is Initialization): Arquivos abertos, conexões de socket e memória alocada são desalocados imediatamente quando a variável sai de escopo (drop).
🔗 Navegação do Capítulo 04
| 📖 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