← Índice

0.3 El familiar

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

Todo mago tiene un familiar, y todo aprendiz pasa semanas descubriendo lo que el familiar puede hacer más allá de lo evidente. Cargo ya respondió una vez - y fue suficiente para que algo apareciera. Pero tiene comandos que aún no han sido invocados. El silencio no significa que no estén ahí.

Lo que necesitas

cargo run lanzó tq - suficiente para empezar. Pero un solo comando no basta para el trabajo real en cualquier proyecto real. El código necesita comprobarse sin ejecutarse. Formatearse, sin pensar en espacios. Analizarse más allá de lo que la sintaxis sola puede detectar.

Cargo tiene un comando para cada uno de estos casos. Vale la pena conocerlos todos.

¿Qué puede hacer?

cargo check

Comprueba el código sin compilarlo. Cargo analiza el fuente, aplica las reglas del compilador e informa de errores - pero no produce ningún ejecutable. Es más rápido que cargo build, lo que lo hace útil cuando quieres confirmar que el código es correcto sin esperar una compilación completa.

cargo check
    Checking tq v0.1.0 (.../tq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s

cargo build

Compila el proyecto y produce un ejecutable en target/debug/tq. A diferencia de cargo run, no lanza el resultado - solo lo construye.

cargo build
   Compiling tq v0.1.0 (.../tq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s

cargo run

Ya conocido: compila y ejecuta inmediatamente. Todo lo que hace cargo build, más el lanzamiento. En el trabajo diario se usa más que cualquier otro.

cargo fmt

Formatea el código fuente según el estándar de Rust. Sin necesidad de pensar en indentación, espacios alrededor de operadores o longitud de línea - cargo fmt se encarga de todo.

cargo fmt

El comando no produce ninguna salida si no hay nada que formatear. Si la hay, reescribe los archivos en silencio. Ejecútalo antes de cada revisión: un lector nota el formato antes que el significado.

cargo clippy

Ejecuta el linter - una herramienta que no busca errores sino malos hábitos: construcciones no idiomáticas, patrones sospechosos, cosas que funcionan pero podrían funcionar mejor.

cargo clippy
    Checking tq v0.1.0 (.../tq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s

Con una sola línea en tq, Clippy no tiene nada que decir. Eso cambiará.

El resultado

Cargo ya no es una caja negra. Tiene cinco comandos, cada uno con un propósito: check, build, run, fmt, clippy. Ahora pueden invocarse por nombre.

El código de tq no cambió en este capítulo - solo aprendíamos las habilidades del familiar. Para mantener la coherencia sigue en 0-the-workshop/03-the-familiar/.


Lore: El directorio target/

Tras la primera compilación, aparece un directorio target/ en la carpeta del proyecto. Cargo deposita ahí todo lo que crea: archivos compilados, caché, artefactos intermedios. En un proyecto grande puede alcanzar varios gigabytes, y se reconstruye cada vez que cambia el código. No pertenece al control de versiones.

cargo new crea un .gitignore junto al proyecto. La línea correcta ya está ahí:

/target

No hace falta nada más. Si el archivo faltara por algún motivo, restáuralo manualmente.


Lore: Configurar el formateador

cargo fmt sigue las reglas estándar - y para la mayoría de proyectos es suficiente. Si necesitas cambiar algo, crea un archivo rustfmt.toml en la raíz del proyecto. Ahí puedes establecer, por ejemplo, una longitud máxima de línea:

max_width = 120

La lista completa de opciones está disponible con rustfmt --help=config. La mayoría de equipos nunca abren este archivo - el estándar es lo bastante bueno como para que discutir con él cueste más de lo que ahorra.