# 🎯 Definição > [!Abstract] Definição > Funções são blocos de código reutilizáveis que executam tarefas específicas. Em [[Linguagem Rust|Rust]], elas são declaradas com a palavra-chave `fn` e seguem a convenção de nomenclatura _snake_case_. A função `main` é o ponto de entrada obrigatório para programas executáveis. # 📝 Notas ## 1. Parâmetros e Tipagem Diferente de variáveis locais onde o [[Linguagem Rust|Rust]] pode inferir o tipo, em assinaturas de função a **anotação de tipo é obrigatória** para todos os parâmetros. ```rust fn main() { exibir_soma(5, 10); } // x e y devem ter tipos explicitamente declarados fn exibir_soma(x: i32, y: i32) { println!("A soma é: {}", x + y); } ``` ## 2. Retorno de Valores Para retornar um valor, utiliza-se a seta `->` seguida do tipo de retorno. O [[Linguagem Rust|Rust]] permite retornos implícitos (a última expressão do bloco) ou explícitos (usando a palavra-chave `return`). ```rust fn cinco() -> i32 { 5 // Sem ponto e vírgula = Expressão de retorno implícito } fn soma(a: i32, b: i32) -> i32 { return a + b; // Retorno explícito (opcional aqui) } ``` ## 3. Declarações vs. Expressões [[Linguagem Rust|Rust]] é uma linguagem baseada em expressões, e entender a diferença é vital para funções: - **Declarações (Statements):** Instruções que realizam uma ação e não retornam valor. Terminam com `;`. - **Expressões (Expressions):** Avaliam para um valor resultante. **Não terminam com `;`** quando usadas como retorno. > [!Warning] Cuidado com o Ponto e Vírgula > Se você adicionar um `;` ao final da última linha de uma função que deveria retornar um valor, ela passará a retornar o tipo unitário `()`, causando um erro de compilação. ## 4. Convenção de Nomenclatura O padrão oficial é o `snake_case` (letras minúsculas com sublinhados). - Correto: `calcular_area_total()` - Incorreto: `calcularAreaTotal()` ou `CalcularArea` # 🔗 Conceitos relacionados - [[Variáveis em Rust]] - [[Regras de propriedade no Rust]] # 📚 Referências - [Funções - A Linguagem de Programação Rust (The Book)](https://doc.rust-lang.org/book/ch03-03-how-functions-work.html) - [Rust by Example: Functions](https://doc.rust-lang.org/rust-by-example/fn.html) - [27: Ownership is cool in Rust - YouTube](https://www.youtube.com/watch?v=FHNESx9S7ZM)