Das Modulsystem in Rust basiert auf dem Schlüsselwort mod. Module ermöglichen es, den Code logisch in Dateien und Namensräume zu unterteilen. Wichtige Punkte:
pub macht ein Element öffentlich für den gesamten Modulbaum.pub(crate) ist im gesamten crate (d.h. Bibliothek/Projekt) zugänglich.use mod_name::item) und Aliase.Für große Projekte wird empfohlen, eine Modulstruktur mit öffentlichen Schnittstellen nur über lib.rs oder main.rs zu verwenden, alles andere bleibt privat:
mod netzwerk; mod speicher; pub use netzwerk::api;
Wenn eine Struktur als pub deklariert ist, wird sie für andere crates zugänglich?
Antwort: Nein, es reicht nicht aus, die Struktur als pub zu kennzeichnen. Sie muss auch in einem Modul deklariert sein, das für externe crates geöffnet ist (pub mod), und die Felder der Struktur müssen public sein, um direkten Zugriff zu ermöglichen.
Beispiel:
mod foo { pub struct Bar; } // Bar ist außerhalb des crate nicht sichtbar, da foo — privat
Geschichte
Geschichte
Geschichte
Viele Anfänger erstellen eine pub-Struktur, lassen jedoch die Felder privat, was die Initialisierung außerhalb des Moduls unmöglich macht. Infolgedessen konnte eine Funktion aus einem anderen Modul die Struktur nicht direkt erstellen, was Fehler verursachte, bis die Felder oder Konstruktoren öffentlich gemacht wurden.