Anuncios

Bienvenidos sean a este post, hoy implementaremos el crate que hicimos en el post anterior.

Anuncios

En el post anterior definimos una libreria o crate muy simple para hacer conversiones de longitud, masa y volumen del sistema metrico decimal al sistema britanico de unidades y viceversa pero hoy nos toca implementarlo por eso te recomiendo crear primero este crate y luego ccontinuar con lo que veremos aqui pero si ya lo tenes vamos para alla!

Anuncios

Nuestro crate estara ubicado en un directorio llamado convlib, nosotros por fuera de este directorio debemos crear un nuevo proyecto que llamaremos conversor, una vez creado iremos al archivo main.rs y modificaremos el codigo generaddo por el siguiente:

main.rs

extern crate convlib;
use convlib::longitud::in_a_cm;
use convlib::volumen::pt_a_li;
use convlib::masa::*;

fn main() 
{
	println!("{}", in_a_cm(32.0));
	println!("{}", pt_a_li(3f32));
	println!("{}", kg_a_lb(55.4));
}
Anuncios

Prrimero importaremos a nuestro crate a traves de la primera linea, luego por medio de use importaremos varias funciones, veamos cada una de las lineas:

  • La primera linea nos importa la funcion de conversion de pulgadas a centimetros
  • La segunda linea nos importa la funcion para convertir pintas a litros
  • La tercer linea nos importa todas las funciones contenidas en el modulo masa
Anuncios
Anuncios

Por ultimo teendremos la funcion main donde mostraremos el resultado de llamar a las dos primeras funciones que importamos y en la ultima linea usaremos la funcion para convertir kilogramos a libras pero como sabemos antes de compilarlo debemos modificar el archivo Cargo.toml, si bien en este post explicamos como hacerlo para crates que se encuentran en el repositorio universal (crates.io) aqui debemos hacerlo de forma local y es sutilmente diferente.

Anuncios

Debemos abrir el archivo Cargo.toml y en la seccion dependencies agregaremos la linea con la siguiente sintaxis:

nombbre_crate = { path = "ubicacion" [, version="numero"] }
Anuncios

El nombre del crate seguido de un tuple donde si pasaremos el path o la ubicacion donde esta el crate, este puede ser tan simple como:

../convlib
Anuncios

O como:

/home/tinchicus/lenguajes/rust/convlib
Anuncios

De manera opcional podemos informar tambien la version del crate que deseamos usar, con esto comentado solo nos resta agregar la siguiente linea en la seccion de dependencies:

convlib = { path = "../convlib" }
Anuncios

En este caso como el directorio de mi crate esta por fuera de mi directorio de este proyecto pero en el mismo directorio contenedor, simplemente retrocedo un nivel y le paso el nombre, veamos como quedo nuestro archivo:

Cargo.toml

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

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

[dependencies]
convlib = { path = "../convlib" }
Anuncios

Con todo esto modificado ahora si podemos pasar a compilar y ejecutarlo para ver el resultado final:

tinchicus@dbn001vrt:~/lenguajes/rust/conversor$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/conversor`
32in equivale a 81.28cm
3 pintas equivale a 1.671 litros
55.4kg equivale a 123.111115lb
tinchicus@dbn001vrt:~/lenguajes/rust/conversor$
Anuncios

Como pueden ver funciono perfectamente donde pudimos importar y utilizar crates o librerias de nuestra propia creacion para nuestras propias necesidades, inclusive si todo funciona perfectamente el crate puede ser subido al repositorio pero eso sera tema de otro post.

Anuncios

En resumen, hoy hemos visto como importar y utilizar un crate propio para nuestros codigos, mediante un ejemplo simple vimos como hacerlo, por ultimo hemos visto como se debe modificar Cargo.toml para permitir la importacion del crate mediante cargo, espero les haya sido util 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