Fonctions

Une fonction en Rust est définie avec le mot clef fn, doit être nommée, peut prendre un certain nombre de paramètres qui doivent être typés, et peut éventuellement retourner une valeur qui doit également être typée.

fn number_of_seconds_in_hours(hours: i32) -> i32 {
    hours * 60 * 60
}

fn main() {
    println!("Seconds in 3 hours: {}", number_of_seconds_in_hours(3));
}

Une fonction non typée renvoie "unit" ().

Instructions et expressions

Le corps d'une fonction en Rust peut être composé d'instructions et d'expressions:

  • une instruction effectue une action et ne retourne pas de valeur
  • une expression est évaluée et retourne une valeur

Ainsi, let x = 6 est une instruction et ne renvoie pas de valeur, alors que x + 3 est une expression et renvoie une valeur (le résultat de l'addition de x avec 3).

Une fonction renvoie la valeur de la dernière expression évaluée sur son flot de contrôle:

fn truc_idiot(x: i32) -> i32 {
    let y = 3;
    x + y
}

fn truc_idiot_bis(x: i32) {
    let y = 3;
    x + y; // return ()
}

fn truc_idiot_ter(x: i32) {
    let y = 3;
    x + y;
    ()  // return () too
}

fn main() {
    println!("{}", truc_idiot(1));
    truc_idiot_bis(2);
    truc_idiot_ter(3);
}