articulo

Rust y sus tipos de datos.

Como en todo lenguaje se tienen los tipos de datos básicos, “enteros, cadenas, carácter, arreglos, boleanos y decimales”, sin embargo rust muestra ciertas peculiaridades a la hora de tratar con los tipos de datos, se muestran a continuación:

Tipo de dato escalar

Un tipo escalar representa un valor único. Por ejemplo, 10,3.14, ‘c’. Se tiene cuatro tipos:

  • Integer.
  • Floating-point.
  • Booleans.
  • Characters.

Enteros

Un número entero es un número sin componente fraccionario. Es decir, el tipo de datos entero se utiliza para representar números enteros. Los enteros se pueden clasificar además como firmados y no firmados. Los enteros con signo pueden almacenar valores tanto negativos como positivos. Los enteros sin signo solo pueden almacenar valores positivos. A continuación, se ofrece una descripción detallada de los tipos de enteros:

TallaFirmadoNo firmado
8 bitsi8u8
16 bitsi16u16
32 bitsi32u32
64 bitsi64u64
128 bitsi128u128
Arcoisizeusar
Tabla 1. Tipo de datos enteros en rust. Fuente: Manual de rust.

El tamaño de un número entero puede ser arco . Esto significa que el tamaño del tipo de datos se derivará de la arquitectura de la máquina. Un número entero cuyo tamaño sea arch será de 32 bits en una máquina x86 y de 64 bits en una máquina x64. Un entero de arco se usa principalmente cuando se indexa algún tipo de colección.

Rango de enteros

Cada variante con signo puede almacenar números de – (2 ^ (n-1) a 2 ^ (n-1) -1 , donde n es el número de bits que usa la variante. Por ejemplo, i8 puede almacenar números de – (2 ^ 7) a 2 ^ 7 -1 – aquí reemplazamos n con 8. Cada variante sin firmar puede almacenar números del 0 al (2 ^ n) -1 . Por ejemplo, u8 puede almacenar números de 0 a 2 ^ 7 , que es igual a 0 a 255.

Desbordamiento de enteros

Un desbordamiento de enteros ocurre cuando el valor asignado a una variable de entero excede el rango definido por Rust para el tipo de datos. El rango válido de la variable u8 sin signo es de 0 a 255. Si a una variable se le asignan valores superiores a 255 (límite superior para una variable entera en Rust). Al ejecutar, el compilador devolverá una advertencia: warning − literal out of range for u8 para la variable que se le asigno y el tipo de dato u8 y fue excedido. Los valores de desbordamiento después de 255 comenzarán desde 0, 1, 2, etc.

Flotantes en rust

El tipo de datos flotantes en Rust se puede clasificar como f32 y f64. El tipo f32 es un flotador de precisión simple y el f64 tiene doble precisión. El tipo predeterminado es f64.

Casting automático.

Si se asigna un valor entero a una variable o constante de tipo flotante marcará un error de: mismatched types error. Esto es debido a que se ha inferido que la variable es de tipo flotante por lo que espera un dato de ese tipo y no un entero, es decir, que no es lo mismo asignar el valor 8.00 que asignar el valor 8 el primero se toma como decimal y el segundo como entero.

Separador de números

Para facilitar la lectura de números grandes, se puede hacer uso de un separador visual (_ )guión bajo para separar dígitos. Eso es 50,000 se puede escribir como 50_000.

Boleanos

Los tipos booleanos tienen dos valores posibles: verdadero o falso . Utilizar el bool palabra clave para declarar una variable booleana.

Caracter.

El tipo de datos caracter en Rust admite números, alfabetos, Unicode y caracteres especiales. Utiliza la palabra reservada char para declarar una variable de tipo de datos de caracteres. El tipo char de Rust representa un valor escalar Unicode, lo que significa que puede representar mucho más que solo ASCII. Los valores escalares Unicode van desdeU+0000 a U+D7FF y U+E000 a U+10FFFF inclusivo.

Cadena / string

El tipo de datos cadena en Rust se puede clasificar en lo siguiente:

  • Cadena literal(&str).
  • Objeto de cadena(String).

Cadena literal (&str)

Los literales de cadena (& str) se utilizan cuando se conoce el valor de una cadena en tiempo de compilación. Los literales de cadena son un conjunto de caracteres, que están codificados en una variable. Por ejemplo, cadena = “rust y sus tipos de datos” . Los literales de cadena se encuentran en el módulo std :: str. Los literales de cadena también se conocen como segmentos de cadena.

Los literales de cadena son estáticos de forma predeterminada. Esto significa que se garantiza que los literales de cadena sean válidos durante todo el programa. También se puede especificar explícitamente la variable como estática.

Objeto de cadena

El tipo de objeto String se proporciona en la biblioteca estándar. A diferencia del literal de cadena, el tipo de objeto de cadena no es parte del lenguaje principal. Se define como estructura pública en la cadena de estructura de publicación de biblioteca estándar . String es una colección que se puede cultivar. Es de tipo mutable y codificado en UTF-8. Los String se puede utilizar para representar valores de cadena que se proporcionan en tiempo de ejecución. El objeto de cadena se asigna en el montón.

Sintaxis

Para crear un objeto String, podemos usar cualquiera de la siguiente sintaxis:

String::new()

La sintaxis anterior crea una cadena vacía

String::from()

Esto crea una cadena con algún valor predeterminado pasado como parámetro al from() método.

Métodos comunes: objeto de cadena

MétodoFirmaDescripción
nuevo()pub const fn new () → CadenaCrea una nueva cadena vacía.
Encadenar()fn to_string (& self) → CadenaConvierte el valor dado en una cadena.
reemplazar()pub fn reemplazar <‘a, P> (&’ a self, de: P, a: & str) → CadenaReemplaza todas las coincidencias de un patrón con otra cuerda.
as_str ()pub fn as_str (& self) → & strExtrae un segmento de cadena que contiene toda la cadena.
empujar()pub fn push (& mut self, ch: char)Agrega el carácter dado al final de esta Cadena.
push_str ()pub fn push_str (& mut self, string: & str)Agrega un segmento de cadena determinado al final de esta cadena.
len ()pub fn len (& self) → usarDevuelve la longitud de esta cadena, en bytes.
podar()pub fn recortar (& self) → & strDevuelve un segmento de cadena con los espacios en blanco iniciales y finales eliminados.
split_whitespace ()pub fn split_whitespace (& self) → SplitWhitespaceDivide un segmento de cadena por espacios en blanco y devuelve un iterador.
división()pub fn split <‘a, P> (&’ a self, pat: P) → Split <‘a, P>, donde P es el patrón puede ser & str, char o un cierre que determina la división.Devuelve un iterador sobre subcadenas de este segmento de cadena, separadas por caracteres que coinciden con un patrón.
caracteres ()pub fn chars (& self) → CharsDevuelve un iterador sobre los caracteres de un segmento de cadena.
Tabla 2. Métodos del objeto cadena en rust. Fuente: manual de rust.

Hasta aquí los tipos de datos en rust. Como se puede observar hay un par de cositas nuevas que maneja este amado lenguaje de programación, en la próxima entrada se vera las variables y sus conceptos para así dar paso a la solución de algunos ejercicios básicos.

Leave a Reply

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