He tenido la curiosidad de crear algo en el blockchain de Stellar. Ahora con la introducción de Soroban, ya se pueden crear Smart Contracts en Stellar. Esta está basada en Rust, así que voy a crear algunos post sobre este lenguaje de programación. El primero es este, donde me voy a encargar de instalar Rust y cargo, que es el punto de entrada para comenzar.
Primero instalamos rust
y su entorno (yo estoy usando Fedora). Puedes consultar más aquí. Abre la consola y ejecuta lo siguiente:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Las herramientas que se instalan son: rustc
, cargo
y rustup
.
rustc
: es el compilador de Rust. Convierte los archivos de código fuente.rs
en los ejecutables o binarios.cargo
: es el administrador de paquetes y dependencias de rust. Es como elnpm
que se usa en Javascript. Rust les llamacrates
a estos paquetes, que los encuentras en la página de crates. Esta la herramienta por default, así que para facilitarnos la vida, crearemos todo usando sus comandos.rustup
: es la herramienta que se encarga de actualizar o instalarrustc
ycargo
y sus dependencias o librerías, ya que se pueden tener varias versiones de rust instaladas (al igual que hacíamos al comparación connpm
, este sería comonvm
) y conrustup
podemos mantener actualizado el entorno.
Veremos más detalles de estos durante esta serie de post.
Antes de hacer cualquier cosa, verificamos las versiones para cada herramienta:
$ rustc -V
$cargo -V
$rustup -V
Hello World después de instalar rust y cargo
Ya con rust y cargo instalados, crearemos el proyecto.
cargo new hello_world
Esto creará una carpeta llamada hello_world
. Con cuatro elementos:
.git
: base de datos Git del proyecto..gitignore
: archivo que le dice a Git cuáles archivos va a excluir de su base de datos.Cargo.toml
: contiene la descripción del paquete y las dependencias usadas en el proyecto. También es llamadomanifest
.src/main.rs
: archivo de código fuente principal.
El archivo main.rs
contiene lo siguiente:
fn main() {
println!("Hello, world!");
}
Claves del código:
fn
es la forma en que se declaran las funciones.- Los bloques de código se delimitan con las llaves (curly braces)
{
y}
. - Rust tiene algo que se llaman
macros
, que veremos más adelante, cuando ya las entienda, solo mira queprintln!
finaliza con el signo de exclamación!
.
El proceso de ejecución lo podemos hacer en dos pasos o en uno. Primero lo hacemos fácil con el comando cargo run
.
Compiling hello_world v0.1.0 (/Users/manuehdez/rust-projects/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in 3.33s
Running `target/debug/hello_world`
Esto compila y ejecuta el proyecto.
En dos pasos sería así:
# Compilamos
cargo build
# Ejecutamos
./target/debug/hello_world
NOTA: esto genera dos nuevos elementos.
Cargo.lock
: cuando se hace elbuild
se genera este archivo. Se encarga de mantener la confiabilidad de las dependencias del proyecto, ya que con el tiempo las versiones de las dependencias cambian y esto puede traer problemas. Este archivo mantiene esa relación entre todas las dependencias. Este se genera cuando ejecutastarget
: es el directorio donde están los archivos “intermedios” del proceso de compilación del proyecto.
Para finalizar el post quiero recomendar las siguientes extensiones de VS Code que yo instalé para hacernos la vida un poquito más sencillo:
- rust-analyzer: con este vamos a obtener el syntax highlighting, documentación, encontrar referencias, completar código, etc.
- Event Better TOML: este nos sirve para mantener en orden los archivos TOML. sintaxis, formato, etc.
- crates: este nos sirve para visualizar de manera sencilla el estado de las dependencias del proyecto.
- Error Lens: nos ayuda a ver los errores en el editor.
Por ahora estos nos servirán.
Gracias por leer.