Funciones
Los parámetros y el tipo de retorno de una función siempre se anotan explícitamente. La última expresión en el cuerpo de una función — escrita sin punto y coma al final — se convierte en su valor de retorno; rara vez necesitas una palabra clave return explícita.
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);
}sum = 7
Expresiones vs. sentencias
Esta distinción recorre todo el lenguaje, no solo los cuerpos de las funciones: un bloque { ... } es en sí mismo una expresión, y su valor es lo que sea que evalúe su última línea, siempre que esa línea no tenga punto y coma. Añade un punto y coma, y se convierte en una sentencia en su lugar, sin valor.
fn main() {
let y = {
let x = 3;
x + 1 // expression, no semicolon - becomes the block's value
};
println!("y = {}", y);
}y = 4
Siguiente: control de flujo — if como expresión, y las tres formas de bucle de Rust.
Practice Exercise
Escribe una función multiply(a: i32, b: i32) -> i32 que devuelva a * b, luego imprime multiply(6, 7).