ubuntuusers.de

Rust

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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_logo.png rustacean-flat-noshadow.png

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. Eine main Funktion muss in jedem Rust Programm vorhanden sein, da sie der Einstiegspunkt ist. Die leere, runde Klammer hinter main 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 Wert Hallo 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 

Diese Revision wurde am 5. Juni 2025 15:06 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung