💡 1. Modulhierarchien in Rust
Dateien werden in Rust über den Modulbaum eingebunden. Module schirmen interne Details standardmäßig privat ab:
// In src/main.rs:
mod storage; // Bindet src/storage.rs ein
use storage::Database; // Importiert Typ in den Scope
fn main() {
let db = Database::connect("localhost");
db.query();
}
// In src/storage.rs:
pub struct Database {
pub url: String, // Öffentlich lesbar
}
impl Database {
pub fn connect(url: &str) -> Self {
Self { url: url.to_string() }
}
pub fn query(&self) { /* ... */ }
}
Jedes Modul ist ein Büro mit verschlossener Tür. Nur wer ein `pub`-Schild an die Tür hängt, erlaubt Kollegen aus anderen Büros den Zutritt!
⚡ 2. Quick-Cheat-Sheet
| Keyword | Einsatzzweck | Beispiel |
|---|---|---|
mod name; | Deklariert und bindet Moduldatei ein | In root (main.rs / lib.rs) |
use pfad::Typ; | Erzeugt Kurznamen im aktuellen Scope | use std::collections::HashMap; |
pub | Macht Element öffentlich | pub fn start() |
pub(crate) | Sichtbar nur im eigenen Crate | Ideal für interne Hilfsmodule |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Nur weil eine Datei src/helper.rs existiert, wird sie nicht kompiliert! Sie MUSS explizit in main.rs mit mod helper; deklariert werden.
Module dürfen sich nicht gegenseitig rekursiv importieren. Halte die Modulhierarchie baumförmig.
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Ownership, Borrowing und Speichersicherheit, bevor du den Code in der Web-IDE schreibst.