Cargo — Rusts Paketmanager und Build-Tool

Praxis-Guide zu Cargo: Rust-Projekte anlegen, bauen, testen, Abhängigkeiten verwalten, Doku erzeugen und Crates auf crates.io veröffentlichen.

Cargo ist das offizielle Build-Tool und der Paketmanager von Rust – mit einem einzigen Befehlssatz legst du Projekte an, lädst Abhängigkeiten (Crates) von crates.io, kompilierst, testest und veröffentlichst. Statt Compiler, Linker und Dependency-Auflösung von Hand zu jonglieren, beschreibst du dein Projekt in der Cargo.toml und überlässt Cargo den Rest. Dieser Guide führt dich durch die Befehle für den Alltag – vom neuen Projekt über Tests und Linting bis zur Veröffentlichung.

Anlegen & Bauen

cargo new <name> — Legt ein neues Binär-Projekt samt Git-Repository an.

cargo new my-app

cargo new --lib <name> — Legt ein neues Bibliotheks-Projekt an.

cargo new --lib my-lib

cargo init — Initialisiert ein Projekt im aktuellen Verzeichnis.

cargo init

cargo build — Kompiliert das Projekt im Debug-Modus.

cargo build

cargo build --release — Kompiliert mit Optimierungen für den Release.

cargo build --release

cargo run — Baut das Projekt und führt es aus.

cargo run

cargo run -- <args> — Führt das Programm mit übergebenen Argumenten aus.

cargo run -- --port 8080

Abhängigkeiten

cargo add <crate> — Fügt eine Abhängigkeit zur Cargo.toml hinzu.

cargo add serde

cargo add <crate>@<version> — Fügt eine bestimmte Version hinzu.

cargo add tokio@1.35

cargo add <crate> --features <feat> — Fügt eine Crate mit aktivierten Features hinzu.

cargo add serde --features derive

cargo add --dev <crate> — Fügt eine Entwicklungs-Abhängigkeit (dev dependency) hinzu.

cargo add --dev criterion

cargo remove <crate> — Entfernt eine Abhängigkeit aus der Cargo.toml.

cargo remove regex

cargo update — Aktualisiert Abhängigkeiten auf die neuesten kompatiblen Versionen.

cargo update

cargo tree — Zeigt den Abhängigkeitsbaum an.

cargo tree

Testen & Prüfen

cargo test — Führt alle Tests aus.

cargo test

cargo test <name> — Führt Tests aus, die zu einem Namensmuster passen.

cargo test test_parse

cargo test -- --nocapture — Führt Tests aus und zeigt stdout/stderr an.

cargo test -- --nocapture

cargo check — Prüft auf Fehler, ohne zu kompilieren (schneller als build).

cargo check

cargo bench — Führt Benchmarks aus.

cargo bench

cargo clippy — Führt den Clippy-Linter für Code-Verbesserungen aus.

cargo clippy -- -W clippy::pedantic

Formatieren & Dokumentation

cargo fmt — Formatiert den Code mit rustfmt.

cargo fmt

cargo fmt -- --check — Prüft die Formatierung, ohne etwas zu ändern.

cargo fmt -- --check

cargo doc — Erzeugt die Dokumentation für das Projekt.

cargo doc

cargo doc --open — Erzeugt die Dokumentation und öffnet sie im Browser.

cargo doc --open

Veröffentlichen & Installieren

cargo publish — Veröffentlicht die Crate auf crates.io.

cargo publish

cargo publish --dry-run — Prüft, ob die Crate veröffentlichungsbereit ist.

cargo publish --dry-run

cargo install <crate> — Installiert eine Binär-Crate von crates.io.

cargo install ripgrep

cargo install --path . — Installiert das aktuelle Projekt als Binärdatei.

cargo install --path .

cargo uninstall <crate> — Deinstalliert eine zuvor installierte Binär-Crate.

cargo uninstall ripgrep

Workspaces & Aufräumen

cargo clean — Entfernt das target-Verzeichnis (kompilierte Artefakte).

cargo clean

cargo workspace <cmd> — Führt einen Befehl über alle Workspace-Mitglieder aus.

cargo test --workspace

cargo metadata — Gibt Projekt-Metadaten als JSON aus.

cargo metadata --format-version 1

cargo search <query> — Sucht auf crates.io nach Crates.

cargo search http server

Fazit

Cargo nimmt dir die gesamte Routine eines Rust-Projekts ab: Mit cargo build, cargo test und cargo run deckst du den täglichen Entwicklungszyklus ab, und cargo clippy plus cargo fmt halten den Code sauber. Zwei Befehle solltest du bewusst einsetzen: cargo install lädt und kompiliert fremde Crates samt deren Build-Skripten, die auf deinem Rechner ausgeführt werden – installiere also nur, was du vertraust. Und cargo publish ist endgültig: Eine einmal veröffentlichte Version lässt sich auf crates.io nicht wieder löschen oder überschreiben – prüfe vorher mit --dry-run.

Verwandte Kommandos

  • artisan – Kommandozeilen-Tool des Laravel-PHP-Frameworks
  • composer – Abhängigkeitsverwaltung für PHP-Projekte
  • drush – Kommandozeilen-Shell für Drupal