← Índice

1.2 Los nombres de las cosas

Esta traducción fue asistida por IA y revisada superficialmente. Si encuentras errores o algo no suena natural, escríbeme — lo agradezco.

Cada cosa tiene una naturaleza - y la naturaleza no pide permiso. Un número sigue siendo un número, una cadena sigue siendo una cadena, e intentar sumarlos no lleva a ningún buen lugar, por convincente que parezca sobre el papel. El compilador lo sabe de antemano. Ese es, precisamente, su trabajo.

Lo que necesitas

El struct Task tiene tres campos con tres tipos. En el capítulo anterior se aceptaron sin explicación. Era la decisión correcta entonces - y sería una mala idea dejarlo así para siempre.

El material

u64 - un entero sin signo.

u significa sin signo: solo cero y números positivos. 64 es el ancho en bits: hasta dieciocho trillones y algo más. Un ID de tarea negativo no tiene sentido - u64 lo hace imposible. Agotar el rango tampoco es motivo de preocupación.

bool - un valor booleano.

true o false. El estado de una tarea tiene exactamente dos estados - bool los expresa con precisión, sin nada sobrante. En el capítulo 1.4, status obtendrá una representación más rica; por ahora, bool es suficiente.

String - una cadena.

Una cadena que el programa crea en tiempo de ejecución, en lugar de tomarse ya hecha del código fuente. String::from("Buy coffee") la crea a partir de un literal de texto.

Inferencia de tipos.

En la definición de un struct, los tipos deben escribirse explícitamente: sin ellos, el compilador no sabe qué forma construir. Pero en otros lugares puede deducirlos por sí solo. Esto ya ocurre en main.rs:

let task = Task {
    id: 1,
    title: String::from("Buy coffee"),
    status: false,
};

En ningún lugar aparece let task: Task = .... El compilador ve el lado derecho y determina el tipo por sí mismo. Escribirlo donde es obvio es trabajo extra que Rust no exige.

El resultado

La tarea no ha cambiado. Pero ahora el aprendiz sabe de qué está hecha. El compilador lo sabía desde el principio.

El código completo de tq para este capítulo está en 1-a-task/02-the-names-of-things/.


Lore: Tipos enteros

Rust tiene varios tipos enteros. El patrón es consistente: i significa con signo (puede ser negativo), u significa sin signo, el número es el ancho en bits.

TipoRango
i32-2.147.483.648 … 2.147.483.647
u320 … 4.294.967.295
i64-9,2 × 10¹⁸ … 9,2 × 10¹⁸
u640 … 1,8 × 10¹⁹

Cuando no se especifica ningún tipo y el contexto no ayuda, Rust usa i32 por defecto - suficientemente grande para la mayoría de usos y rápido en cualquier plataforma moderna.