Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Note

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Praxisteil & Übungen: Das wöchentliche Kontrollsystem

Um den harten Wochenplan erfolgreich zu absolvieren, musst du deine Arbeitsumgebung (den Workspace) als unerbittliches Kontrollorgan nutzen. In Rust gilt: Dein Code ist erst fertig, wenn der Compiler schweigt, Clippy zufrieden ist und alle Tests grün sind.


1. Das wöchentliche Prüfsystem: Die drei Stufen der Qualitätskontrolle

Führe am Ende jeder Woche in deinem Terminal folgende Befehle im entsprechenden Übungsverzeichnis aus:

  1. Stufe 1: Syntax & Typen prüfen

    cargo check
    

    Ziel: Keine roten Fehlermeldungen mehr. Der Compiler muss den Code logisch verstehen.

  2. Stufe 2: Logik validieren (Die Unit-Tests)

    cargo test
    

    Ziel: Alle Tests müssen mit ok bewertet werden. Wenn ein Test fehlschlägt, ist deine Implementierung logisch fehlerhaft, selbst wenn sie kompiliert.

  3. Stufe 3: Stil & Best Practices prüfen

    cargo clippy
    

    Ziel: Keine Warnungen. Clippy ist der eingebaute Linter von Rust, der dich auf ineffizienten Code, unnötige Zuweisungen oder unidiomatischen Stil hinweist.


2. Der Woche-2-Selbsttest: Ownership-Validierung

Bist du bereit für Woche 2? Kopiere das folgende Programm in deine src/main.rs. Es enthält absichtlich einen Fehler, den du korrigieren musst. Es dient als Einstiegstest, um zu prüfen, ob du das Konzept von Ausleihen (Borrowing) verstanden hast.

1: fn berechne_laenge(s: String) -> usize {
2:     s.len()
3: } // Hier wird 's' zerstört!
4: 
5: fn main() {
6:     let text = String::from("Rust-Trainingsplan");
7:     
8:     // Wir übergeben 'text' per Wert (Ownership verschiebt sich)
9:     let laenge = berechne_laenge(text);
10:    
11:    // FEHLER: 'text' wurde in Zeile 9 verschoben und ist hier ungültig!
12:    println!("Der Text '{}' hat die Länge {}.", text, laenge);
13: }
14: 
15: #[cfg(test)]
16: mod tests {
17:     use super::*;
18: 
19:     #[test]
20:     fn test_laenge() {
21:         let test_str = String::from("Test");
22:         // Der Test soll prüfen, ob wir die Länge ermitteln können,
23:         // ohne die Variable unbrauchbar zu machen.
24:         assert_eq!(test_str.len(), 4);
25:     }
26: }

Deine Aufgabe zur Freischaltung von Woche 3:

  1. Führe cargo check aus und analysiere die Fehlermeldung.
  2. Ändere die Signatur von berechne_laenge in Zeile 1 so ab, dass sie eine Referenz (&String oder besser &str) akzeptiert.
  3. Passe den Aufruf in Zeile 9 so an, dass eine Referenz übergeben wird (&text).
  4. Führe cargo test aus. Sobald alle Tests grün sind, hast du Woche 2 gemeistert und darfst mit Woche 3 fortfahren!

Note

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).