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
tqno cambió en este capítulo - solo aprendíamos las habilidades del familiar. Para mantener la coherencia sigue en0-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.