Variables y declaraciones en Rust

10 de febrero del 2024

En Rust a la hora de programar usaremos infinidad de veces algo llamado variables.

Una variable es un contenedor que almacena un valor o información en un programa de computadora. Estos valores pueden ser números, texto, lógicos como verdadero o falso, u otros tipos de información.

Veamos el siguiente ejemplo.

Rust code
let mi_numero = 2;

En Rust para crear nuevas variables usamos la palabra clave let
let
Seguido usaremos el =

Cuando usemos la variable mi_numero obtendremos el valor 2.



Eso se reflejaría en el código de la siguiente manera

Rust code
let mut mi_numero = 2;
// ... más código
mi_numero = 7;

Ahora se cambio, mi_numero


Es decir, a menos que no sea declarada para que sea modificada por futuros programadores esa variable no puede cambiar de valor.


¿Por que? Porque perfectamente se podría tener algo como:

Rust code
let mi_numero = "2";

Eso causaría confusión posiblemente en algunas personas, ¿Debo entender que mi_numero
Estos pueden ser casos muy pequeños pero entre más se complejiza el código y hay nuevos tipos de datos, se requiere más y más definir como debemos interpretar una variable.


Eso significa que para casos muy simples como:

Rust code
let mi_numero = 2;


Pero en Rust hay varios tipos de datos numéricos, por defecto los enteros son de tipo i32
Para definir un tipo usamos los : seguido del tipo de dato que seria.

Rust code
let mi_numero:i32 = 2;

No es necesario hacer esto para este caso el i32 no tendría mucho sentido tiparlo pero podríamos desear que sea de tipo u8 en lugar de i32

Lo que podemos decir es que de momento para hacerlo de tipo u8 podríamos usar:

Rust code
let mi_numero:u8 = 2;

De esta forma si bien el valor seria el mismo el tipo de dato de mi_numero


En Rust la palabra clave const

Rust code
const MAYORIA_DE_EDAD: u8 = 18;

fn main() {
    println!("En este país la mayoría de edad es {}", MAYORIA_DE_EDAD);
}



No pueden haber variables sueltas.

En el caso de las constantes se puede declarar fuera de una función.

Otra característica que quizás notaremos es que las constantes se escriben en mayúsculas.

Y nos puede llamar la atención que la constante puede ser usada en cualquier lado del código. Sin hacer nada raro, tiene lo que se considera un scope (ámbito) global en nuestro código.

Quizás el uso más avanzado del que podremos llegar a ver sera el uso de const para hacer evaluaciones en tiempo de compilación y quizás sea rutinario ver constpara valores que nunca, jamás cambiaran. Ni si quiera con un concepto más avanzado como la mutabilidad interna.


Por ultimo quizás debamos de ver el uso de la palabra static
static
Lifetimes de momento retengan en mente el siguiente ejemplo.

Rust code
// Declara una variable estática global
static GLOBAL_VARIABLE: u8 = 42;

fn main() {
    // Accede a la variable global
    println!("El valor de la variable global es: {}", GLOBAL_VARIABLE);
}

Si bien podríamos creer que es el mismo caso que una constante, en Rust el uso de static
const estas pueden ser modificadas, inicialmente tendrán un valor inmutable, pero nosotros podríamos usar mut
A lo largo de los años, la experiencia de muchos desarrolladores ha demostrado que esto es una mala practica.

Rust sin embargo permitirá la modificación de la variable global pero bajo uso de unsafe
unsafe
Esta vez si es un uso recomendado por desarrolladores expertos que es usando Mutabilidad Interna.

Otro concepto que veremos a lo largo del Roadmap, en el blog y demás.

Desde ya muchas gracias por leer.