← Índice

1.1 Dar forma a la nada

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

Antes de fundir una pieza, el artesano talla el molde. No porque así se haga - sino porque sin el molde, el material no sabe qué debe convertirse. El taller ya tiene orden: herramientas, comprobaciones, una puerta de entrada. El artefacto lleva el nombre de un gestor de tareas y no tiene ni idea de qué es una tarea.

Lo que necesitas

Una tarea no es solo una línea de texto. Tiene varias partes: un número de secuencia, un título y un estado - si está hecha o no. Antes de poder hacer algo con una tarea - pasarla, imprimirla, marcarla como completada - el compilador debe saber cómo está estructurada. Ahora mismo no lo sabe. En el código, una tarea no existe.

El molde

En Rust, la forma para datos relacionados se describe con la palabra clave struct. Aquí hay una tarea:

struct Task {
    id: u64,
    title: String,
    status: bool,
}

Task es el nombre de la forma. Dentro hay tres campos: id de tipo u64, title de tipo String, status de tipo bool. El significado de esos tipos se verá en el próximo capítulo; por ahora, acéptalos tal como son.

Añade esto a main.rs y crea la primera tarea:

struct Task {
    id: u64,
    title: String,
    status: bool,
}

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

    println!("Task #{}: {}", task.id, task.title);
    println!("Done: {}", task.status);
}

Un struct se inicializa dentro de llaves: nombre del campo, dos puntos, valor. String::from crea una cadena a partir de un literal de texto - por qué no simplemente "Buy coffee" se explica en el capítulo 1.2. Los campos se acceden con un punto: task.id, task.title, task.status.

make run
Task #1: Buy coffee
Done: false

make ci pasa.

El resultado

El artefacto sabe qué es una tarea: hay una forma, hay campos, el compilador trabaja con ella. La tarea aún no tiene métodos, ni lista, ni operaciones. El molde existe - y desde él se puede seguir construyendo.

El código completo de tq para este capítulo está en 1-a-task/01-giving-shape-to-nothing/.


Lore: String::from y los literales de cadena

"Buy coffee" es un literal de cadena, de tipo &str. Es una referencia a texto almacenado directamente en el binario compilado. No puede modificarse - solo leerse.

String es algo distinto: una cadena que el programa crea en tiempo de ejecución. Puede modificarse; &str no. String::from("Buy coffee") crea esa cadena a partir de un literal.