Existen dos tipos principales de crates en Rust:
1. Crates de biblioteca (Library Crates): Estos crates contienen código que se puede reutilizar en otros programas o crates. No producen un ejecutable directamente. Los crates de biblioteca suelen tener la extensión .rlib
cuando son compilados.
2. Crates ejecutables (Binary Crates): Estos crates generan un archivo ejecutable y suelen contener una función main
. Son los crates que se ejecutan directamente en el sistema operativo.
Cada crate en Rust tiene un archivo de configuración llamado Cargo.toml
. Este archivo contiene información sobre el crate, como su nombre, versión, dependencias y otras configuraciones necesarias para su compilación y distribución. Además, el código fuente del crate generalmente se organiza en uno o varios archivos en un directorio src
.
Cargo.toml
[package]
name = "mi_crate"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = "1.0"
En este ejemplo, mi_crate
es el nombre del crate, y se declara una dependencia a la biblioteca serde
.
Dentro de un crate, el código puede organizarse en módulos para mantener la estructura clara y manejable. Por ejemplo, el archivo principal main.rs
(para crates ejecutables) o lib.rs
(para crates de biblioteca) puede contener varios módulos:
mod saludo {
pub fn decir_hola() {
println!("¡Hola, mundo!");
}
}
fn main() {
saludo::decir_hola();
}
En este ejemplo, el crate tiene un módulo llamado saludo
con una función pública decir_hola
, que es llamada desde la función main
.
Rust utiliza una herramienta llamada Cargo para gestionar crates y sus dependencias. Cargo facilita la creación, compilación y publicación de crates en crates.io
, el registro de paquetes de Rust. Con comandos como cargo new
, cargo build
y cargo publish
, los desarrolladores pueden manejar todo el ciclo de vida de sus proyectos en Rust.
cargo new mi_crate
- Crea un nuevo crate.
cargo build
- Compila el crate.
cargo run
- Compila y ejecuta el crate (si es un crate ejecutable).
cargo test
- Ejecuta las pruebas del crate.
cargo publish
- Publica el crate en crates.io
.
Jorge García
Fullstack developer