Grundlagen der Module
Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 8 von 61.
Wenn deine Rust-Programme wachsen, wird es umständlich, alles in einer einzigen Datei zu behalten. Mit dem Modulsystem von Rust kannst du Code organisieren, indem du structs und ihre Implementierungen in separate Dateien verschiebst.
Um ein Modul in einer separaten Datei zu erstellen, erstellst du einfach eine neue Datei mit dem gewünschten Modulnamen. Um beispielsweise ein player-Modul zu erstellen, würdest du eine Datei namens player.rs erstellen:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Um dieses Modul in deiner Hauptdatei zu verwenden, deklarierst du es mit dem Schlüsselwort mod. Dadurch wird Rust angewiesen, nach einer Datei mit diesem Namen zu suchen:
// main.rs
mod player;
fn main() {
// Wir können jetzt auf Items aus dem player-Modul zugreifen
}
Die Deklaration mod player; weist Rust an, den Inhalt von player.rs zu finden und einzubinden. Stell dir vor, dass dadurch der Code dieser Datei mit deinem Programm verknüpft wird. Der Modulname muss exakt mit dem Dateinamen übereinstimmen (ohne die Erweiterung .rs).
Diese Trennung hält zusammengehörigen Code zusammen. Deine Struct-Definition und alle ihre Methoden befinden sich in einer eigenen Datei, während main.rs auf den Einstiegspunkt des Programms konzentriert bleibt. In der nächsten Lektion lernst du, wie du tatsächlich auf die Elemente zugreifst, die du in Modulen abgelegt hast.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Methoden und Verhalten
Einführung in ImplementierungsblöckeDer Self-ParameterVeränderliche MethodenAssoziierte FunktionenMehrere ImplementierungsblöckeMethod ChainingRückblick – Rechteck-Aktionen4Projekt: Virtuelles Haustier
Das Haustier definierenDas Haustier füttern7Standard-Traits
Das Debug-TraitDas Display-TraitClone und CopyGleichheits-TraitsZusammenfassung – Druckbarer Punkt10Projekt: Dokumentensystem
Das Draw-TraitText-Komponente2Kapselung und Module
Grundlagen der ModuleDas Public-SchlüsselwortPrivate FelderGetterSetterWiederholung – Sicherer Tresor5Generics
Generische StructsGenerische MethodenMehrere generische TypenGenerische FunktionenZusammenfassung - Koordinatenpunkt8Traits als Einschränkungen
Syntax für Trait BoundsMehrfache BoundsDie Where-KlauselTypen mit Traits zurückgebenRückblick – Generischer Drucker11Design Patterns in Rust
Newtype-PatternKompositionDas Drop-TraitFrom und IntoZusammenfassung – Smart Pointer Mock3Fortgeschrittene Enums
Enums mit DatenMethoden für EnumsMatching von DatenvariantenDas Option-Enum erneut betrachtetZusammenfassung – Shape-Enum6Definition von Traits
Was ist ein Trait?Traits implementierenStandardimplementierungenStandardimplementierungen überschreibenTraits mit ParameternZusammenfassung – Media PlayerÜbe selbstständig: Online-Rust-Compiler