const() en Rust
En este artículo, aprenderemos qué es const()
en Rust.
const()
en Rust
Cuando un valor particular se utiliza varias veces a lo largo de un programa, puede ser engorroso copiarlo repetidamente. Además, no siempre es posible o deseable convertirlo en una variable que se pasa de una función a otra.
La palabra clave const
es una alternativa útil a la duplicación de código en estos casos.
Rust tiene dos tipos de constantes que se pueden declarar en cualquier ámbito, incluido el global. Ambos requieren una anotación explícita de tipo:
-
const
- un valor inmutable (el caso típico) -
static
- una variable mutable con una duración estáticaLa vida útil estática se deduce y, por lo tanto, no es necesario especificarla. Acceder o alterar una variable estática mutable no es seguro.
Ejemplo:
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);
}
Producción :
The limit of user is 120
The value of num is 3.14
Las constantes deben escribirse explícitamente; a diferencia de let
, no puedes dejar que el compilador determine su tipo. Cualquier valor constante podría definirse en una const
, que es la gran mayoría de las cosas que tienen sentido incluir en una constante; por ejemplo, const
no se puede aplicar a un archivo.
El sorprendente parecido entre los elementos const
y static
crea incertidumbre sobre cuándo se debe usar cada uno. Las constantes se inclinan cada vez que se usan, lo que hace que su uso sea equivalente a simplemente reemplazar el nombre const
con su valor.
Por el contrario, las variables estáticas apuntan a una sola dirección de memoria compartida por todos los accesos. Esto implica que, a diferencia de las constantes, no pueden tener destructores y operar como un solo valor en todo el código base.
La palabra clave const
también se usa sin punteros sin procesar, como se ve en const T
y mut T.
.
Ejemplo:
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" });
}
Producción :
Rust is a programming language.
The limit is 10
16 is large