Módulo: Módulos y crates
Este módulo forma parte del curso de Rust. .
Rust organiza el código en tres niveles jerárquicos: packages (proyectos Cargo con uno o más crates), crates (unidades de compilación, binarias o de biblioteca) y módulos (bloques de organización dentro de un crate que controlan el alcance y la privacidad).
Módulos con mod
La palabra clave mod define un módulo. Los módulos pueden anidarse y dividirse en archivos separados. Por defecto, todos los elementos de un módulo son privados: la palabra clave pub los hace accesibles desde fuera.
Visibilidad refinada
Rust ofrece control granular sobre la visibilidad: pub (accesible desde cualquier lugar), pub(crate) (solo dentro del mismo crate) y pub(super) (solo para el módulo padre). Los campos de una struct pública son privados por defecto a menos que se marquen con pub individualmente.
Rutas y use
Para acceder a elementos de otros módulos se usan rutas absolutas (crate::modulo::elemento) o relativas (super::elemento). La palabra clave use crea atajos locales para evitar escribir rutas completas repetidamente. pub use re-exporta elementos para simplificar la API pública de un módulo.
Cargo.toml y dependencias externas
El archivo Cargo.toml declara metadatos y dependencias. Con cargo add se añaden crates de crates.io. Los features de una crate permiten activar funcionalidad opcional:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
Workspaces
Un workspace agrupa múltiples crates relacionados en un mismo repositorio, compartiendo un directorio de caché de compilación y permitiendo gestionarlos con un único cargo build o cargo test en la raíz.
Otros módulos de este curso
Todos los módulos del curso
Navega entre los módulos de Rust
Explora más sobre Rust
Descubre más recursos de Rust
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Rust es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.