Bases des modules
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 8 sur 61.
À mesure que vos programmes Rust se développent, garder tout dans un seul fichier devient difficile à gérer. Le système de modules de Rust vous permet d'organiser le code en déplaçant les structs et leurs implémentations dans des fichiers séparés.
Pour créer un module dans un fichier séparé, il vous suffit de créer un nouveau fichier avec le nom de module souhaité. Par exemple, pour créer un module player, vous créeriez un fichier nommé player.rs :
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Pour utiliser ce module dans votre fichier principal, vous le déclarez avec le mot-clé mod. Cela indique à Rust de chercher un fichier portant ce nom :
// main.rs
mod player;
fn main() {
// Nous pouvons maintenant accéder aux éléments du module player
}
La déclaration mod player; indique à Rust de trouver et d'inclure le contenu de player.rs. Considérez cela comme le fait de lier le code de ce fichier à votre programme. Le nom du module doit correspondre exactement au nom du fichier (sans l'extension .rs).
Cette séparation permet de regrouper le code lié — la définition de votre struct et toutes ses méthodes résident dans un seul fichier dédié, tandis que main.rs reste concentré sur le point d'entrée du programme. Dans la prochaine leçon, vous apprendrez comment accéder concrètement aux éléments que vous avez placés dans des modules.
Aide-mémoire
Pour organiser le code dans des fichiers séparés, créez un fichier de module avec le nom souhaité. Par exemple, player.rs :
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Pour utiliser le module dans votre fichier principal, déclarez-le avec le mot-clé mod :
// main.rs
mod player;
fn main() {
// Le contenu du module est maintenant disponible
}
La déclaration mod player; indique à Rust de trouver et d'inclure player.rs. Le nom du module doit correspondre exactement au nom du fichier (sans l'extension .rs).
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Object Oriented Programming
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédia