← Índice

0.2 El primer conjuro

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

El taller está listo. Eso apenas importa - la preparación solo establece el silencio. Algunas cosas existen únicamente cuando se nombran; en este taller, nombrar es crear. El primer conjuro siempre es demasiado corto y siempre es exacto - es el que convierte la posibilidad en presencia.

Lo que necesitas

El taller está equipado, pero tq todavía no existe. Ni como archivo, ni como proyecto - en absoluto. Antes de que se pueda construir algo, debe haber un lugar donde construirlo. En el mundo de Rust, ese lugar es un paquete - un directorio con código fuente y un manifiesto que describe qué se está construyendo y cómo se llama.

La construcción

cargo new crea un paquete. Un comando, y la estructura está lista:

cargo new tq

Cargo confirma el éxito:

     Created binary (application) `tq` package

El directorio actual ahora contiene:

tq/
├── Cargo.toml
└── src/
    └── main.rs

Dos archivos. Uno describe el paquete, el otro contiene el código.

Cargo.toml es el manifiesto. Cargo lo lee en cada compilación:

[package]
name = "tq"
version = "0.1.0"
edition = "2024"

name es el nombre del artefacto. version es su versión. edition es la versión del lenguaje; 2024 es la actual para proyectos nuevos y no hay razón para cambiarla.

Cargo generó src/main.rs por sí solo:

fn main() {
    println!("Hello, world!");
}

fn main() es el punto de entrada: todo programa Rust empieza aquí. println! imprime una línea en el terminal. Ejecútalo:

cargo run
   Compiling tq v0.1.0 (.../tq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s
     Running `target/debug/tq`
Hello, world!

Cargo compiló el código y ejecutó el resultado. Por ahora, tq habla con voz ajena. Abre src/main.rs y reemplaza la línea:

fn main() {
    println!("Hello, tq!");
}
cargo run
   Compiling tq v0.1.0 (.../tq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.38s
     Running `target/debug/tq`
Hello, tq!

El resultado

tq existe. Tiene nombre, lugar y voz - modesta por ahora, pero real.

El código tq de este capítulo está en 0-the-workshop/02-the-first-incantation/.


Lore: Qué hace cargo run

cargo run son tres pasos en secuencia: verificar el código, compilarlo, ejecutar el resultado. Si el código no ha cambiado desde la última compilación, Cargo omite la compilación - la línea Finished aparece casi al instante, sin Compiling.

El archivo compilado vive en target/debug/tq. Puedes ejecutarlo directamente:

./target/debug/tq

Mismo resultado. cargo run solo te ahorra tener que recordar la ruta.


Lore: edition

Rust se publica cada seis semanas, pero la sintaxis del lenguaje cambia raramente y solo a través de editions - puntos declarados de incompatibilidad. edition = "2024" significa que el paquete usa las reglas del lenguaje de la edición 2024; este es el valor por defecto desde Rust 1.85.

En proyectos más antiguos y en la mayoría de libros encontrarás edition = "2021" - la edición anterior, que sigue siendo totalmente compatible. Distintos paquetes del mismo proyecto pueden usar diferentes ediciones; Cargo sabe cómo combinarlos sin conflicto. Para un proyecto nuevo, 2024 es la elección correcta.