42 - Cargo y crates.io - gestionando proyectos en Rust

42 - Cargo y crates.io - gestionando proyectos en Rust

¡Bienvenidos de nuevo a Rustaceo.es! Hoy exploraremos Cargo, el administrador de paquetes de Rust, y Crates.io, el registro oficial de bibliotecas. Aprenderemos cómo gestionar proyectos, manejar dependencias y publicar nuestras propias crates en el ecosistema de Rust.


🚀 ¿Qué es cargo? #

Cargo es la herramienta oficial para la gestión de proyectos en Rust. Nos permite: ✔ Compilar y ejecutar proyectos. ✔ Gestionar dependencias. ✔ Crear, probar y publicar crates.

📌 Instalar Cargo (si aún no lo tienes):

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

📂 Creando un proyecto con cargo #

Para iniciar un nuevo proyecto en Rust con Cargo:

cargo new mi_proyecto
cd mi_proyecto

Esto genera la siguiente estructura:

mi_proyecto/
├── Cargo.toml  # Configuración del proyecto
├── src/
│   ├── main.rs # Código fuente principal

Para compilar y ejecutar:

cargo run

Para compilar sin ejecutar:

cargo build

Para compilar en modo optimizado:

cargo build --release

📦 Manejo de dependencias #

Las dependencias se gestionan en Cargo.toml.

📌 Ejemplo: Añadiendo serde para serialización

[dependencies]
serde = { version = "1", features = ["derive"] }

Luego, ejecutamos:

cargo check

para asegurarnos de que la dependencia se descargó correctamente.


🔍 Explorando y usando crates de crates.io #

Crates.io es el registro oficial de paquetes Rust. Podemos buscar y añadir paquetes a nuestros proyectos.

📌 Ejemplo: Usando reqwest para peticiones HTTP

cargo add reqwest --features json

Y en el código:

use reqwest;

#[Tokio::main]
async fn main() {
    let respuesta = reqwest::get("https://pokeapi.co/api/v2/pokemon/1")
        .await.unwrap()
        .text()
        .await.unwrap();
    println!("{}", respuesta);
}

🛠 Creación y publicación de un crate en crates.io #

Podemos publicar nuestras propias bibliotecas en Crates.io.

📌 1️⃣ Configurar un nuevo crate #

cargo new mi_crate --lib
cd mi_crate

Editamos Cargo.toml y añadimos metadatos:

[package]
name = "mi_crate"
version = "0.1.0"
authors = ["Tu Nombre <tu@email.com>"]
description = "Un crate de ejemplo"
edition = "2021"

📌 2️⃣ Iniciar sesión en crates.io #

cargo login TU_API_TOKEN

(Tu token se genera en https://crates.io/me)

📌 3️⃣ Publicar el crate #

cargo publish

Ahora estará disponible en Crates.io para que cualquiera lo use.


📌 Conclusión #

Rust proporciona una gestión de dependencias y paquetes sencilla y eficiente con Cargo y Crates.io.

🎯 Resumen de lo aprendido: ✔ Cargo facilita la creación y gestión de proyectos. ✔ Crates.io es el ecosistema de bibliotecas de Rust. ✔ Podemos añadir, compilar y publicar crates fácilmente.

🔮 Próximo paso: Explora Crates.io y publica tu primer crate.

¡Hasta la próxima, Rustaceos!