AnyCompiler

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);
}
Output
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);
}
Output
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).