Fácil Rust
Criando e usando um módulo simples
Enunciado
Crie um módulo matematica com uma função pública soma que recebe dois inteiros e retorna a soma. No main, chame matematica::soma(2, 3) e imprima o resultado.
Requisitos
- O módulo
matematicadeve ser declarado commod. - A função
somadeve ser pública (pub). - O
maindeve chamar a função e imprimir o valor.
Código inicial
// src/main.rs
mod matematica {
// TODO: defina a função soma
}
fn main() {
// TODO: chame matematica::soma(2, 3) e imprima
}
Saída esperada
5
Ver dica
Dentro do módulo, use pub fn soma(a: i32, b: i32) -> i32 { a + b }.
Mostrar solução
// src/main.rs
mod matematica {
// Função pública para ser acessível fora do módulo
pub fn soma(a: i32, b: i32) -> i32 {
a + b
}
}
fn main() {
// Chamada usando o caminho completo do módulo
let resultado = matematica::soma(2, 3);
println!("{}", resultado);
}
Passo a passo
mod matematica { ... }declara um módulo embutido no próprio arquivomain.rs.- Dentro do módulo,
pub fn somadefine uma função visível fora do módulo. Sempub, ela seria privada. - No
main, usamos o caminhomatematica::somapara acessar a função, pois ela está no módulomatematica. - Passamos os argumentos
2e3e armazenamos o retorno emresultado. println!imprime o valor seguido de nova linha.
Por que funciona
Módulos criam namespaces. A função soma pertence ao módulo matematica, então seu caminho é matematica::soma. O pub remove a privacidade padrão, permitindo que o código fora do módulo a chame. O main está na raiz do crate, então pode acessar módulos declarados ali.
Erros comuns
- Esquecer
pubna função:fn soma(...)dentro do módulo. O compilador acusa:functionsomais private. - Tentar chamar
soma(2, 3)diretamente nomainsem o caminho:cannot find functionsomain this scope. - Declarar o módulo depois do
main? Não há problema, a ordem de declaração não importa em Rust.
Outra forma de resolver
Usar use para encurtar o caminho:
mod matematica {
pub fn soma(a: i32, b: i32) -> i32 { a + b }
}
use matematica::soma;
fn main() {
println!("{}", soma(2, 3));
}
Isso é preferível quando a função é usada muitas vezes.
Saída esperada
5