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_proyectocargo run. Lanza el perfil por defecto (dev) del proyecto en que nos encontremoscargo build. Si queremos especificar un perfil, cargo build --nombre-del-perfilLos 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.