Anuncios

Bienvenidos sean a este post, hoy veremos un poco más a fondo el manifiesto del proyecto.

Anuncios

Hace un tiempo en este post, hablamos sobre la estructura de un proyecto. Mencionamos toda su estructura básica y los archivos mínimos para funcionar y entre ellos estaba Cargo.toml. Este se denomina como Manifiesto del proyecto porque contiene todos los datos del mismo. Este archivo no lo comente muy a fondo porque es generado automáticamente por cargo cuando lo usamos para crear uno nuevo. Les dejo un ejemplo de un archivo creado por cargo de manera base:

[package]
name = "app"
version = "0.1.0"
edition = "2024"
[dependencies]
Anuncios

Tenemos los datos del paquete (package) como son el nombre, la versión y su edición. También tenemos una sección donde agregaremos las distintas dependencias para nuestro código. En este post, agregamos uno propio para usarlo en el workspace. Veamos como es uno más completo:

# cargo_manifest_example/Cargo.toml
# We can write comments with `#` within a manifest file
[package]
name = "cargo-metadata-example"
version = "1.2.3"
description = "An example of Cargo metadata"
documentation = "https://docs.rs/dummy_crate"
license = "MIT"
readme = "README.md"
keywords = ["example", "cargo", "mastering"]
authors = ["Jack Daniels <jack@danie.ls>", "Iddie Ezzard <iddie@ezzy>"]
build = "build.rs"
edition = "2018"
[package.metadata.settings]
default-data-path = "/var/lib/example"
[features]
default=["mysql"]
[build-dependencies]
syntex = "^0.58"
[dependencies]
serde = "1.0"
serde_json = "1.0"
time = { git = "https://github.com/rust-lang/time", branch = "master" }
mysql = { version = "1.2", optional = true }
sqlite = { version = "2.5", optional = true }
Anuncios

Ahora no solo tenemos a los que describimos anteriormente sino también otros más, veamos para que se utiliza:

  • description: este es usado para describir el proyecto en si
  • documentation: específica donde esta la documentación del proyecto
  • license: indica cual es el tipo de licencia
  • readme: es para «linkear» al readme de tu repositorio en GitHub
  • keywords: es usado para especificar palabras claves para los buscadores y/o en los repositorios de crate.io
  • authors: indicamos cual es o son los autores
  • build: específica un archivo que posee un código que se corre antes que el resto del programa sea compilado. Por lo general, su nombre es build.rs
Anuncios

Luego de package tenemos a la etiqueta package.metadata.settings, usualmente se encuentra en esta posición. Tiene la particularidad de que es ignorado por cargo pero nos permite establecer valores relacionados a una clave para nuestro proyecto.

Anuncios

Las siguientes tres secciones o etiquetas (features, build-dependencies, dependencies) están relacionadas al mismo nivel. Veamos que representan algunas de estas propiedades:

  • serde: representa la versión de la estructura de datos encargada de serializar y deserializar los datos
  • mysql: es una dependencia para manipular a mysql
  • sqlite: es otra dependencia pero para sqlite
Anuncios

Tenemos dos dependencias para conectarnos a distintas bases de datos pero establecemos como predeterminada a mysql mediante features. También tenemos dos dependencias más pero son para ver dos particularidades. La primera es en syntex donde usamos al símbolo de intercalación (^) para indicarle que solo use versiones superiores a esta. El otro es time pero aquí esta mostrar como cargar una dependencia desde un repositorio de GitHub. Por último, tenemos la posibilidad de agregar comentarios en este archivo mediante el simbolo de hash o numeral (#). Este ejemplo es de  Rahul Sharma y Vesa Kaihlavirta.

Anuncios

En resumen, hoy hemos visto a Cargo.toml, que es, para que sirve, como se genera automáticamente, un ejemplo vacío y otro con más configuraciones. Espero les haya resultado de utilidad y les dejo algunas de mis redes sociales para seguirme o recibir una notificacion cada vez que subo un nuevo post:

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50