Cargo (Software)
# Cargo (Software)

Cargo ist eine Paketverwaltungssoftware für Rust-Pakete, die als Crate bezeichnet werden. Cargo wird über das Rust-Toolchain-Installationsprogramm rustup standardmäßig installiert, für die Verwaltung von Paket-Metadaten greift Cargo auf das Dateiformat TOML zurück.

## Funktionen

Cargo wird als zentrales Werkzeug für die Verwaltung von Rust-Paketen verwendet. Es übernimmt dabei für jedes Paket folgende Aufgaben:

* die Verwaltung der Metadaten über das Paket
* die Auflösung und Kompilierung der Abhängigkeiten
* den Aufruf des Referenz-Compilers rustc mit den passenden Parametern
* die Forcierung von Rust-Konventionen für eine einheitliche Paketverwaltung

## Paketaufbau

Rust-Pakete bestehen aus einem definierten Aufbau:

* die Dateien Cargo.toml und Cargo.lock im Wurzelverzeichnis
* den Quellcodedateien in src/
* optional:
   * Integrationstests in tests/
   * Beispielen in examples/
   * Benchmarks in benches/

### Manifest

Das Paketmanifest liegt in der Cargo.toml sieht beispielhaft folgendermaßen aus:

Unter der Kategorie package werden grundlegende Informationen über das Paket wie Name und Version, sowie die beteiligten Autoren genannt. Die Kategorie dependencies umfasst alle Abhängigkeiten des Paketes, Kategorien wie dev-dependencies oder profile.*ermöglichen es, gesonderte Einstellungen für Tests oder ähnliche Szenarien festzulegen.

Die Datei Cargo.lock enthält die exakten Revisionsdaten der entsprechenden Abhängigkeiten und wird automatisiert von Cargo generiert und gepflegt.

## crates.io

Das offizielle Repository für Crates wird unter crates.io gehostet. Für den Upload eigener Crates wird ein GitHub-Account benötigt. Seit Rust 1.34.0 können auch alternative Repositories in Cargo eingebunden werden, hiervor war ausschließlich die Benutzung von crates.io möglich.

