Funções
Os parâmetros e o tipo de retorno de uma função sempre são anotados explicitamente. A última expressão no corpo de uma função — escrita sem ponto e vírgula no final — se torna seu valor de retorno; você raramente precisa de uma palavra-chave return explícita.
main.rs
Teste você mesmo →fn add(a: i32, b: i32) -> i32 {
a + b // no semicolon - this is the return value
}
fn main() {
let sum = add(3, 4);
println!("sum = {}", sum);
}Output
sum = 7
Expressões vs. instruções
Essa distinção percorre toda a linguagem, não só os corpos de funções: um bloco { ... } é em si uma expressão, e seu valor é o que quer que sua última linha avalie, desde que essa linha não tenha ponto e vírgula. Adicione um ponto e vírgula, e ele se torna uma instrução, sem valor.
main.rs
Teste você mesmo →fn main() {
let y = {
let x = 3;
x + 1 // expression, no semicolon - becomes the block's value
};
println!("y = {}", y);
}Output
y = 4
Próximo: controle de fluxo — if como expressão, e as três formas de loop do Rust.
Practice Exercise
Escreva uma função multiply(a: i32, b: i32) -> i32 que retorne a * b, depois imprima multiply(6, 7).