const() dans Rust
Dans cet article, nous allons apprendre ce qu’est const()
dans Rust.
const()
dans Rust
Lorsqu’une valeur particulière est utilisée plusieurs fois dans un programme, il peut être fastidieux de la copier à plusieurs reprises. De plus, il n’est pas toujours possible ou souhaitable d’en faire une variable transmise de fonction en fonction.
Le mot-clé const
est une alternative utile à la duplication de code dans ces cas.
Rust a deux types de constantes qui peuvent être déclarées dans n’importe quelle portée, y compris globale. Les deux nécessitent une annotation explicite de type :
-
const
- une valeur inchangeable (le cas typique) -
statique
- une variable mutable avec une durée de vie statiqueLa durée de vie statique est déduite et n’a donc pas à être précisée. L’accès ou la modification d’une variable statique mutable n’est pas sûr.
Exemple:
fn main() {
const THE_LIMIT:i32 = 120;
const NUM:f32 = 3.14;
println!("The limit of user is {}", THE_LIMIT);
println!("The value of num is {}",NUM);
}
Production:
The limit of user is 120
The value of num is 3.14
Les constantes doivent être explicitement typées ; contrairement à let
, vous ne pouvez pas laisser le compilateur déterminer leur type. Toute valeur constante pourrait être définie dans un const,
, qui est la grande majorité des choses qui ont du sens à inclure dans une constante ; par exemple, const,
ne peut pas être appliqué à un fichier.
La ressemblance frappante entre les éléments const
et static
crée une incertitude quant au moment où chacun doit être utilisé. Les constantes sont inclinées chaque fois qu’elles sont utilisées, ce qui rend leur utilisation équivalente au simple remplacement du nom const
par sa valeur.
En revanche, les variables statiques pointent vers une seule adresse mémoire partagée par tous les accès. Cela implique que, contrairement aux constantes, elles ne peuvent pas avoir de destructeurs et fonctionnent comme une valeur unique dans toute la base de code.
Le mot clé const
est également utilisé sans pointeurs bruts, comme le montrent const T
et mut T.
.
Exemple:
static LANGUAGE: &str = "Rust";
const LIMIT: i32 = 10;
fn is_big(n: i32) -> bool {
n > LIMIT
}
fn main() {
let n = 16;
println!("{} is a programming language.", LANGUAGE);
println!("The limit is {}", LIMIT);
println!("{} is {}", n, if is_big(n) { "large" } else { "small" });
}
Production:
Rust is a programming language.
The limit is 10
16 is large