Anuncios

Bienvenidos sean a este post, hoy veremos como automatizar la creacion de la estructura de nuestro codigos.

Anuncios

En el post anterior cuando hablamos de la estructura basica del codigo lo dijimos para crearlo de forma manual, lo cual no esta mal pero Rust nos provee una herramienta para poder automatizar esto y esta herramienta se llama cargo pero esta no solo se encarga de esto sino que a su vez nos permite compilar y ejecutar codigo, asi como crear una parte de una libreria en lugar de un ejecutable tal como mencionamos en el post anterior.

Anuncios

Para entender el concepto vamos a crear un ejemplo, para ello en un directorio o una carpeta vamos a ejecutar el siguiente comando:

tinchicus@dbn001vrt:~/lenguajes/rust$ cargo new hola_mundo
Anuncios

En este caso primero ira el comando cargo, luego usaremos la palabra new para indicarle que es un nuevo proyecto seguido del nombre del mismo, si todo sale correctamente tendremos este mensaje:

tinchicus@dbn001vrt:~/lenguajes/rust$ cargo new hola_mundo
     Created binary (application) `hola_mundo` package
tinchicus@dbn001vrt:~/lenguajes/rust$
Anuncios

Con la notificacion de que fue creada en nuestro directorio tendremos lo siguiente:

tinchicus@dbn001vrt:~/lenguajes/rust$ tree .
.
└── hola_mundo
    ├── Cargo.toml
    └── src
        └── main.rs

2 directories, 2 files
tinchicus@dbn001vrt:~/lenguajes/rust$
Anuncios

Observen como no solo nos genero un nuevo directorio conteniendo el proyecto sino que tambien genero el archivo Cargo.toml y a main.rs dentro de src, pasemos a ver el codigo en Cargo.toml:

Cargo.toml

[package]
name = "hola_mundo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
Anuncios

Observen como se completo automaticamente los campos de package y se agrego una nueva etiqueta llamada dependencies, en esta se agregaran las depedencias o librerias que necesite el codigo a medida que lo modifiquemos, nosotros deberemos especificar cuales son las necesarias y despues cargo se encargara de buscarla, descargarlas e instalarlas por nosotros, pasemos a ver el codigo de main.rs:

main.rs

fn main() {
    println!("Hello, world!");
}
Anuncios

En este caso creo la funcion principal, al estilo de C, donde la instruccion mostrara el mensaje en pantalla, con esto vimos la base de como se genera un proyecto con cargo pero ahora pasaremos a compilarlo y ejecutarlo, para ello debemos ingresar en el directorio que se creo y dentro de este ejecutaremos lo siguiente:

cargo build
Anuncios

Esto compilara el codigo donde nos mostrara los siguientes mensajes:

tinchicus@dbn001vrt:~/lenguajes/rust/hola_mundo$ cargo build
   Compiling hola_mundo v0.1.0 (/home/tinchicus/lenguajes/rust/hola_mundo)
    Finished dev [unoptimized + debuginfo] target(s) in 4.38s
tinchicus@dbn001vrt:~/lenguajes/rust/hola_mundo$
Anuncios

Como este es un codigo muy basico veremos una salida muy simple pero a medida que lo vayamos mejorando se veran mas descripciones, con esto tenemos el codigo listo para correrlo simplemente debemos ejecutar los siguiente:

cargo run
Anuncios

Y la salida de esta ejecucion sera de la siguiente forma:

tinchicus@dbn001vrt:~/lenguajes/rust/hola_mundo$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/hola_mundo`
Hello, world!
tinchicus@dbn001vrt:~/lenguajes/rust/hola_mundo$
Anuncios

Observen que nos mostro el mensaje en pantalla y con esto tenemos nuestro primer proyecto creado, compilado y ejecutado, por lo pronto vemos como es su sintaxis:

cargo <comando> <opciones>
Anuncios

A continuacion veremos una serie de comandos que podemos utilizar:

  • fetch, este comando recupera todas las dependencias desde la red, si existe un lockfile este descargara todo lo necesario desde los repositorios y no se volvera a conectar hasta que se hagan cambios en el lockfile
  • generate-lockfile, en caso de no existir el archivo lockfile este comando lo genera y por lo general es creado cuando se utiliza a cargo build
  • git-checkout, este se encarga de chequear el repositorio git se agrega la opcion -url= seguido de la direccion del repositorio
  • locate-project, este comando localiza un paquete
  • login, este almacena un token de la API del registro localmente, se debe agregar la opcion -HOST= seguido del host donde nos conectaremos e informar el token almacenado
  • owner, este comando maneja los propietarios en una caja dentro del registro, cuando hablamos de una caja nos referimos a una libreria de Rust y los «dueños» de esta podran administrar los permisos que concederemos sobre la misma para realizar modificaciones por lo tanto deben ser cuidadosos con esto
  • package, este comando ensambla el paquete local en un paquete distribuible de tipo tarball
  • pkgid, este nos muestra una especificacion de paquete completamente calificada
  • publish, este se encarga de subir un paquete al registro
  • read-manifest, este se encarga de leer el manifiesto (.toml)
  • rustc, este nos permite compilar el paquete completo pero de esto hablaremos mas adelante
  • search, este comando busca paquetes en https://crates.io/
  • update, este comando actualiza todas las dependencias almacenadas en el lockfile local
  • verify-project, nos asegura que el proyecto este correctamente creado
  • version, nos muestra la version de Cargo
  • yank, este nos elimina una caja que haya sido removida del indice, este no eliminara ni la informacion ni el paquete sino que simplemente lo elimina del indice del servidor
Anuncios

En resumen, hoy hemos visto una base de Cargo, para que se usa, como trabaja, como nos ayuda a ahorrar trabajo, como lo podemos utilizar para verificar nuestros codigos, tambien hemos visto los comandos que tenemos disponibles, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50