Section courante

A propos

Section administrative du site

const

Constante
Rust

Syntaxe

const NOM: Type = valeur;

Paramètres

Nom Description
NOM Ce paramètre permet de spécifier le nom de la constante à définir.
Type Ce paramètre permet d'indiquer le type statique de la constante.
valeur Ce paramètre permet d'assigner la valeur fixe et immuable à la constante, connue à la compilation.

Description

Ce mot réservé permet de définir des éléments constants ou des pointeurs bruts constants.

Remarques

Les constantes de compilation, blocs de compilation, fonctions évaluables à la compilation et pointeurs bruts.

Constantes de compilation

Parfois, une valeur est utilisée plusieurs fois dans un programme, et sa copie répétée peut s'avérer complexe. De plus, il n'est pas toujours possible ni souhaitable d'en faire une variable transmise à chaque fonction qui en a besoin. Dans ce cas, le mot clef const offre une alternative pratique à la duplication de code :

  1. const THING: u32 = 0xABAD1DEA;
  2.  
  3. let foo = 123 + THING;

Les constantes doivent être explicitement typées ; contrairement à let, vous ne pouvez pas ignorer leur type et laisser le compilateur le déterminer. Toute valeur de constante peut être définie dans une constante, ce qui correspond en pratique à la plupart des éléments qu'il serait raisonnable d'avoir dans une constante (à l'exception des fonctions const). Par exemple, un fichier ne peut pas être une constante.

La seule durée de vie autorisée pour une constante est «static», englobant toutes les autres dans un programme Rust. Par exemple, si vous souhaitez définir une chaîne constante, elle ressemblera à ceci :

  1. const WORDS: &'static str = "bonjour rust!";

Grâce à l'élision de durée de vie statique, vous n'avez généralement pas besoin d'utiliser explicitement 'static :

  1. const WORDS: &str = "bonjour la commodité!";

Les éléments const ressemblent beaucoup aux éléments statiques, ce qui crée une certaine confusion quant à leur utilisation. En résumé, les constantes sont intégrées partout où elles sont utilisées, ce qui revient à remplacer le nom de la constante par sa valeur. Les variables statiques, quant à elles, pointent vers un emplacement mémoire unique, partagé par tous les accès. Cela signifie que, contrairement aux constantes, elles ne peuvent pas avoir de destructeurs et agissent comme une valeur unique pour l'ensemble du code.

Les constantes, comme les constantes statiques, doivent toujours être en SCREAMING_SNAKE_CASE.

Blocs de compilation

Le mot clef const permet également de définir un bloc de code évalué à la compilation. Ceci est utile pour garantir que certains calculs sont terminés avant les optimisations, ainsi qu'avant l'exécution.

Fonctions évaluables à la compilation

L'autre utilisation principale du mot clef const se trouve dans les fonctions const. Cela permet de marquer une fonction comme appelable dans le corps d'un élément const ou statique et dans les initialiseurs de tableau (communément appelés « contextes const »). Les fonctions const sont limitées dans l'ensemble des opérations qu'elles peuvent effectuer, afin de garantir leur évaluation à la compilation.

La transformation d'une fonction en fonction const n'a aucun effet sur son utilisation à l'exécution. Autres utilisations de const.

Le mot clef const est également utilisé dans les pointeurs bruts en combinaison avec mut, comme dans *const T et *mut T.



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