Rust/Installation von `rustup`, `rustc` und `cargo`
Willkommen in der Welt von Rust! Um erfolgreich mit Rust zu programmieren, musst du drei wichtige Werkzeuge kennenlernen: rustup, rustc und cargo. Keine Sorge, wir erklären alles so einfach, dass du als Programmieranfänger sofort loslegen kannst.
Lernziele
Nach diesem Kurs wirst du:
- Verstehen, was `rustup`, `rustc` und `cargo` sind und worin sie sich unterscheiden.
- Rust selbstständig auf deinem Computer installieren und aktualisieren können.
- Einzelne Rust-Dateien mit dem Compiler übersetzen können.
- Komplette Rust-Projekte mit Cargo erstellen, verwalten, testen und bauen können.
Lektionen
Lektion 1: rustup – Dein Werkzeug-Manager
Stell dir `rustup` wie einen Werkzeugkoffer vor. Wenn du Rust verwenden möchtest, musst du es zuerst installieren. `rustup` kümmert sich um die Installation, Updates und darum, dass du immer die passenden Werkzeuge (wie den Compiler) hast.
- Hauptaufgabe: Rust installieren und aktuell halten.
- Wichtigster Befehl: `rustup update` (um alles auf den neuesten Stand zu bringen).
Lektion 2: rustc – Der Übersetzer
Computer verstehen unseren geschriebenen Text (den Code) nicht direkt. Sie brauchen Nullen und Einsen. Hier kommt `rustc` (der Rust-Compiler) ins Spiel. Er nimmt deinen Rust-Code und übersetzt ihn in ein Programm, das der Computer ausführen kann.
- Hauptaufgabe: Deinen Code in ein fertiges Programm verwandeln.
- Wichtigster Befehl: `rustc programm.rs` (übersetzt die Datei in ein ausführbares Programm).
Lektion 3: cargo – Dein Projektmanager
Du wirst `rustc` fast nie direkt benutzen. Warum? Weil `cargo` das für dich macht! `cargo` ist wie ein Bauleiter: Es erstellt Ordner für dein Projekt, lädt andere Codes (Bibliotheken) aus dem Internet herunter und ruft `rustc` auf, um alles zusammenzubauen.
- Hauptaufgabe: Projekte erstellen, verwalten und bauen.
- Wichtigste Befehle: `cargo new` (neues Projekt), `cargo run` (Programm bauen und starten).
Übungen und 75 Mini-Projekte (Projektbasiertes Lernen)
Hier sind 75 kleine Aufgaben, mit denen du die Werkzeuge in der Praxis kennenlernst. Jedes Mini-Projekt dauert nur wenige Minuten!
Teil 1: Mini-Projekte zu rustup (1-25)
- Hallo rustup: Öffne das Terminal und gib `rustup --version` ein.
- Updates prüfen: Führe `rustup update` aus, um die neuesten Versionen zu holen.
- Werkzeuge anzeigen: Nutze `rustup show`, um zu sehen, was installiert ist.
- Hilfe suchen: Lass dir mit `rustup help` alle Befehle erklären.
- Docs lokal: Öffne die Offline-Dokumentation in deinem Browser mit `rustup doc`.
- Zielplattformen: Führe `rustup target list` aus. Was siehst du?
- Komponenten checken: Untersuche mit `rustup component list`, welche Extras verfügbar sind.
- Formatierer holen: Installiere `rustfmt` mit `rustup component add rustfmt`.
- Linter installieren: Füge `clippy` hinzu: `rustup component add clippy`.
- Nightly installieren: Lade die Vorschauversion mit `rustup toolchain install nightly`.
- Nightly aktivieren: Mache Nightly zum Standard: `rustup default nightly`.
- Zurück zu Stable: Wechsle wieder zur stabilen Version: `rustup default stable`.
- Ordner-Spezifisch: Setze in einem speziellen Ordner eine andere Version: `rustup override set nightly`.
- Override löschen: Entferne diese Regel wieder mit `rustup override unset`.
- Profil wechseln: Ändere dein Profil auf 'minimal': `rustup set profile minimal`.
- Profil zurücksetzen: Gehe zurück auf 'default': `rustup set profile default`.
- Deinstallieren üben: Entferne die Nightly-Toolchain: `rustup toolchain uninstall nightly`.
- Wo bin ich?: Finde heraus, wo `rustup` liegt: `rustup where`.
- Selbst-Update: Aktualisiere nur rustup selbst: `rustup self update`.
- Beta-Version: Installiere die Beta-Version: `rustup toolchain install beta`.
- Einmalig Beta: Führe einen Befehl explizit via Beta aus: `rustup run beta rustc --version`.
- WebAssembly: Füge Wasm als Ziel hinzu: `rustup target add wasm32-unknown-unknown`.
- Alte Versionen: Installiere eine sehr alte Rust-Version (z.B. 1.50): `rustup toolchain install 1.50.0`.
- Aufräumen: Deinstalliere Version 1.50.0 wieder.
- Quellcode laden: Lade den Rust-Sourcecode: `rustup component add rust-src`.
Teil 2: Mini-Projekte zu rustc (26-50)
- Erstes Programm: Erstelle `hallo.rs`, schreibe eine 'main'-Funktion mit `println!` und kompiliere mit `rustc hallo.rs`.
- Programmumbenennung: Kompiliere und gib dem Programm einen eigenen Namen: `rustc hallo.rs -o mein_programm`.
- Fehler provozieren: Lösche ein Semikolon im Code und lies die rote `rustc`-Fehlermeldung.
- Typenfehler: Versuche eine Zahl und einen Text zu addieren, beobachte `rustc`.
- Fehlererklärung: Nutze den Tipp aus der Konsole, z.B. `rustc --explain E0308`.
- Kompakt-Modus: Minimiere Code-Ausgaben: `rustc -O hallo.rs` (Optimierung).
- Warnungen ansehen: Deklariere eine Variable `let x = 5;` ohne sie zu nutzen und kompiliere.
- Warnungen unterdrücken: Füge `#[allow(unused_variables)]` hinzu.
- Strenge Regeln: Wandle Warnungen in Fehler um: `rustc -D warnings hallo.rs`.
- Bibliothek erstellen: Baue Code ohne `main`-Funktion: `rustc --crate-type lib hallo.rs`.
- Metadaten ausgeben: Lass dir sagen, was kompiliert wird: `rustc --emit metadata hallo.rs`.
- Assembler ansehen: Generiere Maschinencode-Text: `rustc --emit asm hallo.rs`.
- Architektur: Setze die Ziel-Architektur manuell: `rustc --target x86_64-unknown-linux-gnu hallo.rs`.
- Standard-Edition: Kompiliere im älteren 2018-Standard: `rustc --edition 2018 hallo.rs`.
- Ausgabeverzeichnis: Lege fest, wohin die Datei soll: `rustc --out-dir ./neuer_ordner hallo.rs`.
- Bunte Farben aus: Schalte die Farbausgabe ab: `rustc --color never hallo.rs`.
- Version von rustc: Rufe `rustc --version` auf.
- Verbose-Modus: Lass rustc redselig werden: `rustc --verbose --version`.
- Tests kompilieren: Füge `#[test]` hinzu und kompiliere mit `rustc --test hallo.rs`.
- Externe Links: Verbinde eine Library manuell mit `rustc -L . hallo.rs`.
- Crate-Name logisch ändern: Nutze `rustc --crate-name test_projekt hallo.rs`.
- Ausführungszeit prüfen: Miss, wie lange `rustc` braucht (z.B. mit dem Befehl `time`).
- LLVM IR ausgeben: Lass rustc die Zwischensprache zeigen: `rustc --emit llvm-ir hallo.rs`.
- Hilfe lesen: Stöbere in `rustc --help`.
- Zusammenfassung: Kombiniere `-O`, `--edition 2021` und `--out-dir`.
Teil 3: Mini-Projekte zu cargo (51-75)
- Startschuss: Baue ein neues Projekt: `cargo new mein_projekt`.
- Ordnerstruktur: Analysiere, was Cargo in `mein_projekt` anlegt (src, Cargo.toml).
- Bauen: Wechsle in den Ordner und tippe `cargo build`.
- Sofort-Start: Führe `cargo run` aus (baut und startet gleichzeitig).
- Schneller Check: Überprüfe Fehler ohne zu bauen: `cargo check`.
- Release bauen: Baue eine superschnelle, optimierte Version: `cargo build --release`.
- Ausmisten: Lösche den `target`-Ordner mit `cargo clean`.
- Neues Paket hinzufügen: Öffne die `Cargo.toml` und füge `rand = "0.8"` hinzu.
- Cargo Add benutzen: Füge eine Bibliothek im Terminal hinzu: `cargo add serde`.
- Cargo Remove: Lösche Serde wieder: `cargo remove serde`.
- Abhängigkeitsbaum: Lass dir den Abhängigkeits-Baum zeigen: `cargo tree`.
- Code formatieren: Bringe Unordnung in deinen Code und tippe `cargo fmt`.
- Code-Analyse: Lass den Linter Clippy rübergehen: `cargo clippy`.
- Lokale Docs: Generiere Dokumentationen für dich und deine Helferlein: `cargo doc --open`.
- Tests ausführen: Schreibe einen kleinen `#[test]` in die `main.rs` und tippe `cargo test`.
- Neues Lib-Projekt: Erstelle directly eine Bibliothek: `cargo new --lib meine_bib`.
- Ausführbare Beispiele: Erstelle einen Ordner `examples` und führe ihn mit `cargo run --example demo` aus.
- Paket updaten: Aktualisiere Hilfs-Pakete mit `cargo update`.
- Suchen: Finde Pakete ohne Browser: `cargo search regex`.
- Werkzeuge installieren: Installiere ein fremdes Rust-Tool weltweit: `cargo install ripgrep`.
- Offline-Modus: Baue ohne Internetverbindung: `cargo build --offline`.
- Projekt packen: Simuliere einen Veröffentlichungs-Prozess: `cargo package`.
- Metadaten: Zeige maschinenlesbare Infos: `cargo metadata`.
- Globaler Cache: Mache dich mit dem Ordner `~/.cargo/registry` vertraut.
- Cargo-Hilfe: Entdecke weitere Befehle mit `cargo --list`.
20 Große Projekte (Top-Down-Lernen)
Jetzt fügen wir alles zusammen. Hier erstellst du mit `cargo` große Projekte von der Idee bis zum fertigen Produkt.
- Taschenrechner im Terminal: Nutze `cargo new` und schreibe ein Programm, das Eingaben liest und Plus, Minus, Mal, Geteilt rechnet. Teste die Formeln mit `cargo test`.
- Zahlenraten-Spiel: Binde mit `cargo add` das `rand`-Paket ein. Lass das Programm eine zufällige Zahl generieren, die der Spieler erraten muss.
- Notizbuch-App: Speichere und lade Zeilen aus einer Textdatei (.txt). Kompiliere abschließend im `--release` Modus.
- Wetter-Anzeige (CLI): Binde die `reqwest`-Bibliothek ein und hole Wetterdaten aus dem Internet. Betrachte den komplexen Abhängigkeitsbaum mit `cargo tree`.
- Vokabel-Lernkartei: Lese eine CSV-Datei ein. Nutze `cargo clippy`, um sicherzustellen, dass dein Code perfekt sauber ist.
- Eigener Web-Server: Starte einen Server (z.B. mit dem Crate `axum` oder `actix-web`) und zeige ein "Hallo Welt" im Browser.
- ToDo-Listen-Verwaltung: Ein Programm mit Menü: Hinzufügen, Löschen, Anzeigen. Speichere die Daten in einer lokalen JSON-Datei (Nutze `serde`).
- Markdown zu HTML Konverter: Schreibe ein Tool, das `.md`-Dateien einliest und einfache HTML-Dateien ausspuckt. Formatiere den Code stets mit `cargo fmt`.
- Passwort-Generator: Generiere sichere 16-stellige Passwörter. Mache dies als reines Bibliotheksprojekt (`cargo new --lib`) und schreibe eine GUI oder CLI in einem anderen Projekt dafür.
- Stoppuhr / Pomodoro-Timer: Ein Timer, der Warntöne abgibt. Nutze Multi-Threading für den Hintergrund-Timer.
- ASCII-Art Zeichner: Lies ein kleines Bild ein und wandle die Pixel in ASCII-Zeichen um.
- Text-Verschlüsselung (Caesar Chiffre): Schreibe einen Algorithmus, der geheime Nachrichten verschlüsselt. Teste alle möglichen Kombinationen mit echten Test-Funktionen (`cargo test`).
- Dateisystem-Durchsucher: Ähnlich wie Windows-Suche: Gib einen Begriff ein, und Rust durchsucht rasend schnell alle Dateien in einem Ordner.
- Chat-Client: Baue eine einfache Client-Server-Architektur, bei der zwei Terminals miteinander chatten können.
- Morse-Code-Übersetzer: Gib Text ein, das Programm übersetzt es in Punkte und Striche und gibt Pieptöne aus.
- Ausgaben-Tracker: Ein Finanz-Tool, in dem du Ausgaben einträgst. Generiere eine kleine Statistik.
- Tagebuch mit Passwort-Schutz: Nutze Verschlüsselungs-Bibliotheken (über Cargo hinzugeladen), bevor dein Text in die Datei geschrieben wird.
- Ein Cargo-Workspace: Erstelle einen übergeordneten "Workspace", der zwei Projekte gleichzeitig beinhaltet: Eine Text-Analyse-Bibliothek und ein Terminal-Interface, das diese nutzt.
- Eigener Mini-Programmiersprachen-Interpreter: Erstelle einen Interpreter für eine winzige, ausgedachte Spaß-Sprache. Bei Typfehlern schaust du dir an, wie gut `rustc` dir bei der Lösung hilft.
- Ein öffentliches Crate vorbereiten: Mach eins deiner Projekte bereit, um es (theoretisch) mit `cargo publish` der Welt zur Verfügung zu stellen. Generiere dazu eine perfekte Offline-Anleitung mit `cargo doc`.