Aula 04 - Funções e Organização de Código 📦
Objetivo
Objetivo: Entender como declarar funções, passar parâmetros, retornar valores e como organizar o código em múltiplos arquivos e módulos para manter a manutenabilidade.
1. Funções em Rust 🛠️
No Rust, usamos a palavra-chave fn e a convenção de nomeação é o snake_case.
Anatomia de uma Função
fn main() {
println!("Início do programa");
outra_funcao(5, 'h');
}
fn outra_funcao(valor: i32, unidade: char) {
println!("O valor medido é: {}{}", valor, unidade);
}
2. Parâmetros e Retorno 🔄
Diferente de variáveis locais, você deve declarar o tipo de cada parâmetro em uma função.
Funções com Retorno
O tipo de retorno é declarado após a seta ->.
fn cinco() -> i32 {
5 // Sem ponto e vírgula = Retorno implícito
}
fn soma(a: i32, b: i32) -> i32 {
return a + b; // Uso opcional da palavra 'return'
}
3. Expressões vs Instruções 🧪
Rust é uma linguagem baseada em expressões.
- Instruções (Statements): Ações que não retornam valor (terminam em ;).
- Expressões (Expressions): Avaliam e resultam em um valor (não terminam em ;).
4. Organizando com Módulos 📂
Para projetos maiores, usamos o sistema de módulos (mod) para dividir o código.
Estrutura de Pastas
Usando Módulos em main.rs
Definindo em util.rs
5. Visualização: Hierarquia de Módulos 🏛️
graph TD
crate["Crate (Raiz)"] --> main["main.rs (Binário)"]
crate --> lib["lib.rs (Biblioteca)"]
main --> mod_auth["mod auth"]
main --> mod_db["mod db"]
mod_auth --> login["fn login()"]
mod_db --> query["fn query()"]
style crate fill:#f96,stroke:#333
6. Mini-Projeto: Calculadora Modular 🧮
Divida seu código em dois arquivos:
1. operacoes.rs: Contenha funções para somar, subtrair, multiplicar e dividir.
2. main.rs: Importe o módulo operacoes e realize uma série de cálculos baseados na entrada do usuário.
7. Exercício de Fixação 🧠
- Qual a diferença visual entre uma expressão e uma instrução no Rust?
- Para que serve a palavra-chave
pubantes de uma função em um módulo? - O que acontece se você declarar uma função que promete retornar um
i32mas não retorna nada?
Próxima Aula: Vamos encarar o conceito mais importante do Rust: Ownership (Parte 1)! 🧠 (Nota: O link correto será aula-05.md)