Lecciones del módulo (2/2)
Tipos primitivos
Rust es un lenguaje de tipado estático, lo que significa que debe conocer el tipo de todas las variables en el momento de la compilación. Por lo general, el compilador puede deducir el tipo basándose en el valor asignado, pero a veces es necesario o útil especificarlo manualmente.
Los tipos primitivos en Rust se dividen en dos grandes categorías: escalares (un solo valor) y compuestos (grupo de valores).
Tipos Escalares
Los tipos escalares representan un único valor. Rust tiene cuatro fundamentales:
- Enteros: Números sin decimales. Pueden ser con signo (
i8,i16,i32,i64,i128,isize) o sin signo (u8,u16,u32,u64,u128,usize). El tipo por defecto esi32. - Punto flotante: Números con decimales. Pueden ser
f32of64(doble precisión, por defecto). - Booleanos: Representan la verdad lógica con
trueofalse(tipobool). - Caracteres: Un único punto de código Unicode encerrado entre comillas simples (tipo
char), ej.'a','ℤ', o un emoji'😻'.
Ejemplo de anotación explícita del tipo:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';
Tipos Compuestos
Los tipos compuestos pueden agrupar múltiples valores en un único tipo. Rust tiene dos tipos compuestos primitivos principales:
Las Tuplas
Una tupla agrupa valores de diferentes tipos en una colección de tamaño fijo:
let person: (String, i32) = (String::from("Alice"), 30);
// Destrutturazione per estrarre valori
let (name, age) = person;
// Accesso diretto con l'indice usando il punto (.)
let name_direct = person.0;
let age_direct = person.1;
Los Arreglos (Vectores de tamaño fijo)
Un arreglo (array) agrupa múltiples elementos del mismo tipo en una colección de tamaño fijo almacenada en la pila (stack):
let numbers = [1, 2, 3, 4, 5]; // Rilevato come [i32; 5]
let first = numbers[0]; // Accesso per indice
let third = numbers[2];
Si intentas acceder a un índice fuera de los límites del arreglo (ej. numbers[10]), Rust interrumpirá inmediatamente la ejecución (pánico) en tiempo de ejecución en lugar de permitir accesos a memoria no autorizada.
Comparación entre Tuplas y Arreglos
| Característica | Tupla | Arreglo |
|---|---|---|
| Tipo de los elementos | Pueden ser diferentes | Deben ser iguales |
| Tamaño | Fijo | Fijo |
| Acceso | Mediante punto (.0, .1) | Mediante índice ([0]) |
Pruébalo tú
Declara una tupla llamada stats que contenga la edad 30 (entero) y la puntuación 95.5 (float). Luego imprime en pantalla la puntuación accediendo directamente al segundo elemento de la tupla usando el índice.
Mostrar pista
Crea la tupla con `let stats = (30, 95.5);`. Accede al segundo elemento usando `stats.1` dentro de la macro `println!`.
Solución disponible después de 3 intentos
Declara un arreglo llamado numbers que contenga los valores enteros del 1 al 5. Imprime en pantalla el tercer elemento del arreglo (índice 2) usando println!.
Mostrar pista
Declara el arreglo con `let numbers = [1, 2, 3, 4, 5];` y accede al tercer elemento indexándolo con `[2]`.
Solución disponible después de 3 intentos
Dada la tupla `let point = (10, 20);`, usa la desestructuración para extraer los valores en dos variables llamadas `x` y `y`. Luego imprime la suma de `x` y `y`.
Mostrar pista
Usa la sintaxis `let (x, y) = point;` para desestructurar la tupla y luego suma las variables en el `println!`.
Solución disponible después de 3 intentos