Section courante

A propos

Section administrative du site

return

Retour
Rust

Syntaxe

return valeur;
return;

Paramètres

Nom Description
valeur Ce paramètre permet de spécifier la valeur retournée par la fonction.

Description

Ce mot réservé permet d'indiquer un retour de fonction.

Remarques

Permet de retourner une valeur d'une fonction.

Un retour marque la fin d'un chemin d'exécution dans une fonction :

  1. fn foo() -> i32 {
  2.     return 3;
  3. }
  4. assert_eq!(foo(), 3);

L'option return n'est pas nécessaire lorsque la valeur renvoyée est la dernière expression de la fonction. Dans ce cas, l'élément ; est omis :

  1. fn foo() -> i32 {
  2.     3
  3. }
  4. assert_eq!(foo(), 3);

return renvoie immédiatement la fonction (un « retour anticipé ») :

  1. use std::fs::File;
  2. use std::io::{Error, ErrorKind, Read, Result};
  3.  
  4. fn main() -> Result<()> {
  5.     let mut file = match File::open("foo.txt") {
  6.         Ok(f) => f,
  7.         Err(e) => return Err(e),
  8.     };
  9.  
  10.     let mut contents = String::new();
  11.     let size = match file.read_to_string(&mut contents) {
  12.         Ok(s) => s,
  13.         Err(e) => return Err(e),
  14.     };
  15.  
  16.     if contents.contains("impossible!") {
  17.         return Err(Error::new(ErrorKind::Other, "oh non!"));
  18.     }
  19.  
  20.     if size > 9000 {
  21.         return Err(Error::new(ErrorKind::Other, "plus de 9000!"));
  22.     }
  23.  
  24.     assert_eq!(contents, "Bonjour le monde !");
  25.     Ok(())
  26. }

Dans les fermetures et les blocs désynchronisées, return renvoie une valeur provenant de la fermeture ou du bloc asynchrone, et non de la fonction parente :

  1. fn foo() -> i32 {
  2.     let closure = || {
  3.         return 5;
  4.     };
  5.  
  6.     let future = async {
  7.         return 10;
  8.     };
  9.  
  10.     return 15;
  11. }
  12.  
  13. assert_eq!(foo(), 15);    


Dernière mise à jour : Vendredi, le 1er Août 2025