Le système de modules en Rust repose sur le mot-clé mod. Les modules permettent de diviser logiquement le code en fichiers et espaces de noms. Points clés :
pub rend un élément public pour tout l'arbre des modules.pub(crate) est accessible dans tout le crate (c'est-à-dire la bibliothèque/projet).use mod_name::item) et alias.Pour les grands projets, il est recommandé d'utiliser un arbre de modules avec une description des interfaces publiques uniquement via lib.rs ou main.rs, le reste étant privé :
mod network; mod storage; pub use network::api;
Si une structure est déclarée comme pub, sera-t-elle accessible pour d'autres crates ?
Réponse : Non, il n'est pas suffisant de marquer la struct comme pub. Il est également nécessaire qu'elle soit déclarée dans un module ouvert à l'extérieur du crate (pub mod), et les champs de la structure doivent être publics pour y avoir un accès direct.
Exemple :
mod foo { pub struct Bar; } // Bar n'est pas visible en dehors du crate, car foo est privé
Histoire
Histoire
Histoire
De nombreux débutants créent une structure pub, mais laissent les champs privés, ce qui rend leur initialisation impossible en dehors du module. En conséquence, une fonction d'un autre module ne pouvait pas créer la structure directement, ce qui a provoqué des erreurs jusqu'à ce que les champs ou les constructeurs soient rendus publics.