Rust 101, tutorial de Rust en español
Rust es un lenguaje imperativo, orientado a objetos y funcional, con gran soporte a concurrencia y de propósito general. En este tutorial de Rust daremos nuestros primeros pasos en Rust, un lenguaje que nace de las necesidades de tener un lenguaje que fuese rápido, concurrente y seguro. Aprenderemos a amar/odiar al estricto compilador y veremos algunas de las grandes ideas detrás de Rust. Sin embargo, esto requiere mayor atención de nuestra parte ya que Rust no es otro lenguaje basado en C. Algunas de sus características son:
- Abstracciones sin costo
- Seguridad de memoria garantizada
- Eliminación de las condiciones de carrera
- Generalización basada en traits
- Comparación de patrones
- Inferencia de tipos
Rust toma influencias de muchos lenguajes, para dar lugar a un estilo único de programación que costará más de lo habitual aprender a usar de forma efectiva. Rust toma influencia de C++, OCaml, Haskell y en menor medida de Erlang, Alef, Limbo, Swift y otros lenguajes menos conocidos.
Si aprecias el trabajo detrás de este tutorial, no dudes en apoyarme a través de una donación vía PayPal o alguna criptodivisa (ver margen derecho). También se aceptan mejoras al texto, tan solo ponte en contacto conmigo.
Índice del tutorial de Rust
- Instalando Rust
- Variables y tipos de datos en Rust
- Referencias y préstamos en Rust
- Funciones y closures en Rust
- Estructuras de control en Rust
- Structs, traits y POO en Rust
- Gestión de errores en Rust, Option y Result
- Concurrencia en Rust
- Box, Rc y RefCell, punteros inteligentes en Rust
- Cargo y módulos en Rust
- Tests en Rust
- Documentación con rustdoc
- Leer de teclado en Rust
- Crear ventanas y botones en Rust con GTK
- Leer y escribir JSON en Rust con Serde
- Yew, crea webapps al estilo Angular/React en Rust
- Construye un servidor web o una API con Rocket
- Programa juegos en Rust con Piston (actualmente recomiendo ggez antes que Piston)
- Futures y Tokio: programación asíncrona
- Diversión con punteros: bloques unsafe en Rust
- Bindings entre Rust y C/C++ con bindgen
Otros artículos sobre Rust en el blog
Instalando Rust
Rust funciona en una gran variedad de sistemas operativos y emite código compatible con muchos otros. El compilador oficial de Rust usa LLVM de forma interna, por la que las mejoras que se realicen sobre LLVM mejoran de forma indirecta el compilador de Rust. Otros lenguajes que usan LLVM son: C++ (con el compilador Clang), Julia, Swift, FORTRAN (con el compilador Flang), D (con el compilador LDC), Haskell (a través de GHC) y muchos más con otros compiladores. Mencionar que también existe un compilador de Rust bajo la suite GCC pero es experimental y no se recomienda su uso. Para instalar el compilador oficial de Rust visitamos la página oficial de Rust. Hacemos click en Instalar. Descargamos el archivo y seguimos los pasos en pantalla.
Lo que acabamos de hacer es usar rustup. Se trata de un programa que nos ayudará mucho y que nos permite instalar varias versiones de Rust en una misma máquina así como actualizar las mismas. Es una herramienta parecida a rvm de Ruby o nvm de Node.js. rustup nos instala rustc, cargo y rustdoc. Comprobemos que Rust se ha instalado correctamente, hagamos un Hola Mundo. Crea un archivo llamado hola.rs (rs es la extensión de los archivos de código fuente de Rust). Debe contener lo siguiente:
fn main() { println!("¡Hola mundo!"); }
Podemos compilar con rustc.
rustc hola.rs -o hola
Como en GCC, la opción -o sirve para especificar el nombre del ejecutable de salida. println! es una macro que nos permite escribir en pantalla. Permite realizar interpolaciones, usando llaves. Por ejemplo: println!("Mi nombres es {}","Adrián"); Equivale a: println!("Mi nombre es Adrián");
Usando rustup
He aquí algunos comandos útiles para manejar rustup de forma efectiva.
Mostrar que versión está actualmente activa
rustup show
Actualizar los entornos de Rust
rustup update
Instalar la versión nightly de Rust
rustup install nightly
Ejecutar esta un comando con un entorno determinado
rustup run nightly rustc hola.rs -o hola
Cambiar el entorno por defecto
rustup default nightly / rustup default stable
Añadir una plataforma al entorno (para cross-compiling)
rustup target add arm-linux-androideabi (Android ARM)
Con esto acabamos esta parte sobre como configurar el entorno. A continuación entraremos en profundidad ya en el lenguaje en sí.