const() en Rust

Nilesh Katuwal 7 junio 2022
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:

  1. const - un valor inmutable (el caso típico)

  2. static - una variable mutable con una duración estática

    La 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