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
tqpara este capítulo está en1-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.