Rust
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 25.04 Plucky Puffin
Ubuntu 24.04 Noble Numbat
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Rust 🇬🇧 ist eine Programmiersprache, welche mit einem besonderen Fokus auf Sicherheit entwickelt wird. „Sicherheit“ bedeutet hier, dass der Compiler schon beim Übersetzen eines Rust Programms auf Speicher- und Threadsicherheit achtet. Bei möglichen Programmierfehlern und Verletzungen wird der Kompiliervorgang abgebrochen, so dass möglichst erst gar kein ausführbares Programm mit Fehlern, die zu Sicherheitslücken führen könnten, erstellt wird.
Rust ist eine multiparadigmatische Sprache mit starker statischer Typisierung, deren Code vom Rust Compiler zu einer ausführbaren Datei kompiliert wird. Auch wenn Rust eine universelle Sprache ist, wird es oft zur systemnahen Programmierung eingesetzt. Ab dem Linux-Kernel 6.1 ist Rust auch für die Kernelentwicklung zugelassen und gewinnt seit Ubuntu 25.10 offenbar auch im Umfeld der Dienstprogramme an Bedeutung.
Rust wurde ursprünglich von der Mozilla Foundation gesponsert. Seit 2021 wird Rust maßgeblich von der Rust Foundation 🇬🇧 weiterentwickelt.
Neben dem offiziellen Rust Logo, der Buchstabe „R“ in einem Zahnrad, gibt es noch das inoffizielle Rust Maskottchen Namens „Ferris the Crab“ (auf deutsch: Ferris, die Krabbe), welches öfters im Zusammenhang mit der Programmiersprache zu sehen ist.
Installation¶
Rust kann aus den Ubuntu Paketquellen oder manuell installiert werden. Das Rust-Projekt verfolgt einen „rapid release cylce“. Dadurch erscheint alle sechs Wochen eine neue Version. Innerhalb dieser sechs Wochen können, falls notwendig, noch Fehlerbehebungen für die aktuelle, stabile Version veröffentlicht werden.
Wer die aktuelle Version von Rust benötigt oder die komplette Rust Toolchain nutzen möchte, sollte Rust manuell installieren. Zum einfachen Ausprobieren von Rust kann man es auch aus den Ubuntu Paketquellen beziehen.
aus den Paketquellen¶
Der Rust-Compiler ist in den Ubuntu Paketquellen enthalten und kann systemweit über das Paket
rustc
Befehl zum Installieren der Pakete:
sudo apt-get install rustc
installiert werden[1]. rustc
reicht aus, um in Rust geschriebene Programme zu kompilieren. Zur vollen Nutzung sollte man zusätzlich noch cargo installieren. Bei der Installation von cargo wird der Rust-Compiler direkt mit installiert.
manuell¶
Hinweis!
Fremdsoftware kann das System gefährden.
Wer die aktuelle, stabile Version von Rust nutzen möchte, kann diese über mit dem folgenden Befehl[2] für den aktuellen Nutzer installieren:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Dabei wird neben dem Rust-Compiler ebenfalls cargo sowie das Tool rustup zur Verwaltung der Rust-Installation installiert. Im Jargon von Rust wird dies als „Rust Toolchain“ (sinngemäß übersetzt: Rust Werkzeugkasten) bezeichnet. Während der Installation wird gefragt, ob der Installer die PATH Umgebungsvariable modifizieren darf. Bejaht man dies, ist rustc
, cargo
und rustup
direkt im Suchpfad des Nutzers vorhanden. Im weiteren Verlauf der Installation ist der Installer ebenfalls sehr auskunftsfreudig, was gerade passiert bzw. wohin installiert wird.
Benutzung¶
Einstieg: Hallo Welt Programm¶
Im folgenden Beispiel wird ein einfaches „Hallo Welt“-Programm geschrieben und dann mit dem Rust Compiler zu einer ausführbaren Datei übersetzt. Das Programm kann mit einem beliebigen Editor[3] erstellt werden:
1 2 3 4 | //hier steht ein Kommentar fn main() { println!("Hallo Welt!"); } |
Erklärung:
In der 1. Zeile steht ein Kommentar, in Rust durch zwei Vorwärtsschrägstriche
//
eingeleitet.In der 2. Zeile wird die Funktion
main
definiert. Einemain
Funktion muss in jedem Rust Programm vorhanden sein, da sie der Einstiegspunkt ist. Die leere, runde Klammer hintermain
bedeutet, dass die Funktion keine Parameter entgegen nimmt. Der Funktionskörper ist von geschweiften Klammer{ }
umschlossen.Die 3. Zeile ruft das Makro 🇬🇧
println
auf. Macros erkannt man daran, dass der Name auf das Aufrufzeichen!
endet. Das Makro bekommt den WertHallo Welt!
übergeben, der dann bei der Ausführung des Programms ausgegeben wird.
Anschließend speichert man das Programm unter einem beliebigen Namen, zum Beispiel hallo_welt.rs. Per Konvention sollen Rust-Programme die Endung .rs haben. Dann kann man das Programm kompilieren:
rustc hallo_welt.rs
Erhält man keine Ausgabe, ist alles glatt durchgelaufen. Im Verzeichnis findet man nun das ausführbare, kompilierte Programm unter dem Namen hallo_welt. Führt man dieses mit
./hallo_welt
aus, bekommt man – wenig überraschend – Hallo Welt!
ausgegeben. Kompilierte Rust-Programme werden als „crate“ (zu deutsch: Kiste) bezeichnet.
Benennt man die Funktion main
um, zum Beispiel in irgendwas
und versucht das Programm dann erneut zu kompilieren, erhält man eine Fehlermeldung wie
error[E0601]: `main` function not found in crate `hallo_welt` --> hallo_welt.rs:4:2 | 4 | } | ^ consider adding a `main` function to `hallo_welt.rs` error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0601`.
Der Rust-Compiler moniert also das Fehlen der main
Funktion. Ändert man das Programm wie folgt:
1 2 3 4 5 | //hier steht ein Kommentar fn main() { let greeting = "Welt"; println!("Hallo Welt!"); } |
erhält man ebenfalls eine Fehlermeldung beim Kompilieren, weil die Variable greeting
definiert, aber innerhalb des Programms nicht genutzt wird. Ändert man den Code in
1 2 3 4 5 | //hier steht ein Kommentar fn main() { let greeting = "Welt"; println!("Hallo {greeting}!"); } |
lässt sich das Programm übersetzen und ausführen. let
definiert dabei in Rust eine unveränderliche Variable. Würde man im Code nach dem println!
-Makro noch die Zeile let greeting = "Ubuntu";
einfügen, würde der Compiler ebenfalls eine Fehlermeldung ausgeben, weil versucht wird, die unveränderliche Variable greeting
zu überschreiben.
weiterführendes Beispiel¶
Ein weiterführendes Beispiel, was tiefer in die Grundlagen von Rust einführt, findet man im Rust Book 🇬🇧 im zweiten Kapitel 🇬🇧. Dort wird ein einfaches, textbasiertes Spiel zum Raten von Zahlen erstellt.
Projekt mit cargo anlegen¶
Im Rust Umfeld ist es üblich, für Programmierprojekte ein neues Projekt via cargo, dem Paketmanager von Rust anzulegen. Dazu führt man den folgenden Befehl aus:
cargo new hallo_welt --bin
Dadurch wird im aktuellen Verzeichnis ein Unterverzeichnis namens hallo_welt angelegt und darin direkt ein neues git Repository für das Projekt erstellt. Möchte man kein git-Repo anlegen, muss man dem Befehl die Option --vcs none
mitgeben. In dem Verzeichnis hallo_welt befindet sich die .gitignore-Datei sowie die Datei Cargo.toml. Diese enthält Informationen zum Projekt wie Name, Version und Abhängigkeiten zu anderen Rust-Modulen. Des Weiteren gibt es ein Unterverzeichnis scr, in dem der eigene Programmcode abgelegt wird. Hier befindet sich auch die Datei main.rs, die das oben gezeigte, einfache „Hallo Welt“ Programm als Beispiel enthält.
Zum Kompilieren des Projekts führt man im Projektverzeichnis den Befehl
cargo build
aus. Das kompilierte Programm findet man dann im Unterverzeichnis target/debug. Ist das Programm fertig, führt man den Befehl
cargo build --release
aus. Hierbei wird das Programm ebenfalls kompiliert, allerdings mit mehr Optimierungen und weniger Debug-Optionen, was zu schnellerem Code führt. Nutzt man die Option --release
, befindet sich das kompilierte Programm im Verzeichnis target/release.
cargo kennt für Projekte noch wesentlich mehr Möglichkeiten und Optionen. Als weiterführende Lektüre empfiehlt sich das Kapitel creating a new project 🇬🇧 im Cargo Book 🇬🇧
Rust-Compiler aktualisieren¶
Hinweis:
Der folgende Abschnitt gilt nur, wenn man Rust manuell installiert und damit das Programm rustup
ebenfalls auf dem Rechner hat.
Mit Hilfe des Programms rustup
aus der Rust Toolchain kann Rust bzw. die installierte Rust Toolchain aktualisiert werden. Um zu prüfen, ob eine neue Version verfügbar ist, führt man zuerst den Befehl
rustup check
aus. Man erhält eine Ausgabe wie
stable-x86_64-unknown-linux-gnu - Up to date : 1.86.0 (05f9846f8 2025-03-31) rustup - Update available : 1.28.1 -> 1.28.2
Der Rust-Compiler (erste Zeile der Ausgabe) liegt hier in der Version 1.86.0 vor, für rustup (zweite Zeile der Ausgabe) gibt es ein Update.
Das Update kann man über den folgenden Befehl installieren:
rustup update
rustup bietet noch viel mehr Möglichkeiten, diese sind im rustup Buch 🇬🇧 beschrieben.
Deinstallation¶
Hat man Rust manuell installiert, erfolgt die Deinstallation mittels rustup
. Dazu folgenden Befehl ausführen:
rustup self uninstall
Links¶
Projektseite 🇬🇧
Github Seite des Rust-Projekts
Startseite 🇬🇧 der Rust Dokumentation
Rust Book 🇬🇧 – Tutorial und Einsteig in Rust
Rust im Linux Kernel 🇬🇧 – Dokumentation, wie Rust im Linux Kernel genutzt werden kann