3  El entorno de Rust

En este capítulo conoceremos las herramientas básicas que forman parte del ecosistema de Rust. Veremos cómo instalar Rust, crear proyectos, compilar programas y acceder a la documentación oficial.

3.1 Instalación

La instalación recomendada se realiza mediante rustup, el gestor oficial de herramientas y versiones de Rust.

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

Esto instalará:

  • El compilador rustc.

  • La herramienta de gestión cargo.

  • La biblioteca estándar, documentación y herramientas auxiliares.

3.2 Compilación y ejecución

En muchos lenguajes, un programa suele corresponderse con un único fichero fuente. En Rust incluso un programa sencillo se denomina típicamente proyecto, con un directorio propio y varios subdirectorios.

Se puede usar directamente el compilador rustc, pero lo normal es utilizar cargo, el sistema oficial de gestión de proyectos y paquetes de Rust. Integra compilación, ejecución, gestión de dependencias, tests y generación de documentación.

3.2.1 Crear un proyecto

Normalmente empezaremos un proyecto ejecutando

cargo new mi_proyecto

Esa orden crea, en el directorio actual, un subdirectorio llamado mi_proyecto con toda la estructura básica del proyecto. En mi_proyecto/src/main.rs escribe un holamundo, para usar como punto de partida.

A continuación veremos las órdenes para compilar y ejecutar nuestros programas. Todos estos comandos tendremos que ejecutarlos desde el directorio del proyecto. En este ejemplo, mi_proyecto.

3.2.2 Compilar y ejecutar

El comando:

cargo run

compila el proyecto y, si la compilación finaliza con éxito, ejecuta automáticamente el programa resultante. El ejecutable generado se almacena en el directorio ./target/debug/.

3.2.3 Solo compilar

El comando:

cargo build

compila el proyecto y genera el ejecutable correspondiente, pero sin ejecutarlo. Por defecto, el ejecutable se almacena en el directorio ./target/debug/.

3.2.4 Compilación para distribución

El comando:

cargo build --release

genera una versión optimizada del programa. La compilación suele requerir más tiempo, pero produce programas más rápidos y eficientes. El ejecutable resultante se almacena en el directorio ./target/release/.

Por defecto, el comando cargo run ejecuta la versión situada en ./target/debug/. Para compilar y ejecutar directamente la versión optimizada puede utilizarse:

cargo run --release

3.3 Formato

La Rust Style Guide define un formato oficial para el código fuente, implementado por la herramienta rustfmt, usada de forma prácticamente universal. Basta ejecutar, en el directorio del proyecto:

cargo fmt.

3.4 Documentación

La principal referencia para aprender Rust es el libro The Rust Programming Language, de S. Klabnik, C. Nichols y C. Krycho.

Además de la edición impresa, existe una versión en HTML que puede consultarse de dos formas:

  • En su página web:

    https://doc.rust-lang.org/book/

  • Mediante el comando:

    rustup doc --book

    Esto abre en nuestro navegador la copia local del libro instalada junto con Rust, por lo que no es necesario disponer de conexión a Internet.

3.5 Organización de proyectos en Rust

Rust y Cargo utilizan varios conceptos para organizar el código y estructurar proyectos de distinto tamaño. Los más importantes son crate, package y workspace.

  • Crate

    Unidad básica de compilación en Rust. Puede corresponder a un programa ejecutable, cuyo punto de entrada se encuentra habitualmente en main.rs, o a una biblioteca, definida normalmente en lib.rs.

  • Package

    Proyecto gestionado por Cargo. Se identifica mediante un fichero Cargo.toml, donde se almacenan datos como el nombre del proyecto, su versión, las dependencias utilizadas y diversas opciones de configuración. Un package puede contener uno o varios crates.

  • Workspace

    Conjunto de packages gestionados conjuntamente. Resulta especialmente útil en proyectos grandes, donde diferentes componentes se desarrollan y compilan de forma coordinada.