Para instalar podemos seguir la guía en la página oficial. A continuación un resumen.
Para instalar rust lo primero que tenemos que hacer es instalar rustup. Este nos instala el lenguaje, cargo, y nos permite tener todo actualizado de forma sencilla con rustup update
. En definitiva nos sirve para gestionar todas las herramientas del ecosistema.
Hay que añadir la ruta donde se instala a nuestro PATH. En mi caso export PATH
"$HOME/.cargo/bin:$PATH"=.
Nos sirve para todo… Compila, instala dependencias, crea proyectos, lanza tests, etc. Se configura con el archivo cargo.toml de forma local en un proyecto, y de forma global en ~/.cargo/config.toml
.
cargo new nombre_proyecto
cargo run
. Lanza el perfil por defecto (dev
) del proyecto en que nos encontremoscargo build
. Si queremos especificar un perfil, cargo build --nombre-del-perfil
Los perfiles se definen como secciones con título [profile.nombredelperfil]
. Por defecto existe y se ejecuta el perfil dev
. Si queremos hacer algún cambio en él:
[profile.dev]
debug = 0
strip = "debuginfo"
Dependencias se definen en sección [dependencies]
. Ejemplo:
[dependencies]
uuid = "1.6.1"
Hay varias webs donde se explica todo esto, no pongo ningún enlace porque es información ubicua.
[target.x86_64-unknown-linux-gnu]
linker = "/usr/bin/clang-16"
rustflags = ["-C", "link-arg=--ld-path=/usr/bin/mold"]
Hay que ajustar la ubicación de clang (y su versión) y de mold.
Ojo, si usamos debugger obviar este punto. Este cambio se realiza en el cargo.toml de nuestro proyecto.
[profile.dev]
debug = 0
strip = "debuginfo"
Cuando vayamos a debugger podemos comentar y compilar, aunque tardará mucho la primera vez tras el cambio.
TODO
TODO
Sí lo que queremos es ejecutar, sí hemos de hacer cargo run
.
Para hacer build en el perfil que estemos, cargo build
.
Pero muchas veces simplemente quiero comprobar si algún cambio afecta en otra parte del código. Con cargo check
sobre. Tenemos incluso cargo-watch, que ejecuta check ante cualquier cambio. Hace algo más, pero eso es lo que nos importa.
Enlace: Rustc book.
Se usa el flag opt-level. Si usamos -o, es equivalente a -C opt-level=2.
0: sin optimización, las debug_assertions funcionan. Valor por defecto. 1: optimizaciones básicas. 2: algunas optimizaciones (la que se pone si usamos -o). 3: todas las optimizaciones s: optimización para el tamaño del binario. z: optimización para el tamaño del binario., pero apago vectorización de bucles.