post

Rust y sus variables

Rust maneja un par de conceptos en las variables, estos son mutabilidad e inmutabilidad en el primer caso se refiere a que la variable puede cambiar su valor como tal en el resto del programa aún después de que se haya sido asignado un valor. El segundo concepto refiere a que la variable una vez que haya sido asignado un valor no podrá cambiar el valor, es decir, queda en modo de solo lectura, esto previene fallos de seguridad dentro del código y técnicamente es recomendado, porque imagina que has generado el *.exe de tu programa escrito en rust y alguien quiere desensamblar el ejecutable para saltarse los pasos de verificación de la licencia, en otros lenguajes compilados con técnicas tradicionales es posible hacerlo, pero al incluir este concepto en el programa (inmutabilidad) el binario en cuestión trata de prevenir un bache de seguridad. O en el caso de las páginas web cuando envían un valor por el método get -por ejemplo- puede ser cambiado por el usuario, pero al darle la propiedad de inmutabilidad ya no sería tan fácil. Es posible que exista sentido de existir estos conceptos.

Sintaxis

Para declarar una variable en rust hay que hacer uso de la palabra reservada let, como se ve a continuación:

let nombre_variable:tipo_de_dato = valor_de_variable;
let nombre_variable = valor_de_variable;

Como se puede observar en la línea anterior para declarar una variable de tipo entero no hay que olvidar la manera de hacerlo en este post se indica veamos unos ejemplos.

// declarando una variable de tipo entero
let edad:i32 = 18;
// declarando una variable de tipo decimal o float
let precio:f64 = 3.99;
// declarando una variable de tipo boleana o lógica
let coneccion:bool = true;
// declarando una variable de tipo carácter.
let alfa:char = 'A';
// declarando una variable de tipo cadena / literal / texto / cuerda
let nombre:str = "mi programa en rust";

Rust tiene la ventaja que puede inferir el tipo de dato que se esta usando en una variable, así al estilo python o php, donde no se indica el tipo de dato que se va a procesar en la variable en cuestión. Lo que es importante saber es que tipo de dato entra en juego en la inferencia para poder estar al pendiente de un desbordamiento por tipo de dato. Al calce unos ejemplos

// declarando una variable de tipo entero 
let edad = 18; //el compilador identifica que es un entero y le asigna el tipo i32
// declarando una variable de tipo flotante
let precio = 8.99; //el compilador identifica que es un valor flotante y le asigna el f64
// declarando una variable de tipo carácter.
let alfa = "A"; // el compilador le asigna el valor char por defecto.
// declarando una variable string
let nombre = "Mi programa en rust"; //el compilador le asigna el valor por defecto.

Recomendaciones para declarar una variable en rust

  • El nombre de una variable puede estar compuesto por letras, dígitos y el carácter de subrayado.
  • Debe comenzar con una letra o un guión bajo.
  • Las letras mayúsculas y minúsculas son distintas porque Rust distingue entre mayúsculas y minúsculas.

Inmutabilidad

De forma predeterminada, las variables en rust son inmutables: de solo lectura. En otras palabras, el valor de la variable no se puede cambiar una vez que un valor se le ha asignado a un nombre de variable.

Mutabilidad

Las variables son inmutables por defecto en rust. Para cambiar esa propiedad hay que hacer uso de la palabra reservada munt, que va a permitir la mutabilidad de la variable, es decir, podrá cambiar en cualquier parte del programa. La sintaxis para declarar una variable mutable es la que se muestra a continuación:

let mut nombre_variable = valor_variable;
let mut nombre_variable:tipo_dato = valor_variable;

Sombreado de variable

Es un concepto que permite cambiar el valor con el que una variable ha sido declarada inicialmente, pero sin perder su inmutabilidad. Es decir, se declara la variable con un valor y después se le declara con otro. El valor final de la variable dado sera “hola rust” y no “hola”. Modo de empleo:

let dado = "uno";
let dado = "hola rust";

Leave a Reply

Your email address will not be published. Required fields are marked *