Conceptos básicos de módulos
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 8 de 61.
A medida que tus programas de Rust crecen, mantener todo en un solo archivo se vuelve difícil de manejar. El sistema de módulos de Rust te permite organizar el código moviendo los structs y sus implementaciones a archivos separados.
Para crear un módulo en un archivo separado, simplemente crea un nuevo archivo con el nombre de módulo deseado. Por ejemplo, para crear un módulo player, crearías un archivo llamado player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Para usar este módulo en tu archivo principal, lo declaras con la palabra clave mod. Esto le indica a Rust que busque un archivo con ese nombre:
// main.rs
mod player;
fn main() {
// Ahora podemos acceder a los elementos del módulo player
}
La declaración mod player; le indica a Rust que busque e incluya el contenido de player.rs. Piénsalo como si estuvieras vinculando el código de ese archivo en tu programa. El nombre del módulo debe coincidir exactamente con el nombre del archivo (sin la extensión .rs).
Esta separación mantiene el código relacionado unido: la definición de tu struct y todos sus métodos residen en un archivo dedicado, mientras que main.rs se mantiene enfocado en el punto de entrada del programa. En la siguiente lección, aprenderás cómo acceder realmente a los elementos que has colocado en los módulos.
Hoja de referencia
Para organizar el código en archivos separados, crea un archivo de módulo con el nombre deseado. Por ejemplo, player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Para usar el módulo en tu archivo principal, decláralo con la palabra clave mod:
// main.rs
mod player;
fn main() {
// Module contents are now available
}
La declaración mod player; le indica a Rust que busque e incluya player.rs. El nombre del módulo debe coincidir exactamente con el nombre del archivo (sin la extensión .rs).
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Métodos y Comportamiento
Intro a Bloques de ImplementaciónEl Parámetro SelfMétodos MutablesFunciones AsociadasMúltiples Bloques de ImplementaciónEncadenamiento de MétodosResumen - Acciones de Rectángulo4Proyecto: Mascota virtual
Definir la mascotaAlimentar a la mascota7Traits estándar
El trait DebugEl trait DisplayClone y CopyTraits de igualdadResumen - Punto imprimible10Proyecto: Sistema de documentos
El Trait DrawComponente de texto2Encapsulamiento y módulos
Conceptos básicos de módulosLa palabra clave PublicCampos privadosGettersSettersRepaso - Casillero seguro5Genéricos
Estructuras genéricasMétodos genéricosMúltiples tipos genéricosFunciones genéricasResumen - Punto de coordenadas8Traits como límites
Sintaxis de límites de traitsLímites múltiplesLa cláusula whereRetornar tipos con traitsResumen: Impresora genérica11Patrones de diseño en Rust
Patrón NewtypeComposiciónEl Trait DropFrom e IntoResumen - Mock de Smart Pointer3Enums avanzados
Enums con datosMétodos en EnumsCoincidencia de variantes de datosEl Enum Option revisitadoResumen - Enum Shape6Definición de Traits
¿Qué es un Trait?Implementación de TraitsImplementaciones por defectoSobrescribir valores por defectoTraits con parámetrosResumen - Reproductor multimedia