Syntax ·
Variablen ·
Ownership ·
Borrowing ·
Kontrollstrukturen ·
Pattern Matching
Rust ist eine systemnahe Sprache, die Speichersicherheit ohne Garbage Collector garantiert. Diese Konzepte sind essenziell für die Entwicklung sicherer und performanter Anwendungen.
Rust-Programme beginnen mit der main()-Funktion. Ausgaben erfolgen mit dem println!-Makro. Variablen werden mit let deklariert und sind standardmäßig unveränderlich (immutable).
| Element | Beschreibung |
|---|---|
| fn main() | Hauptfunktion (Einstiegspunkt) |
| println!("text") | Ausgabe mit Zeilenumbruch |
| print!("text") | Ausgabe ohne Zeilenumbruch |
| let x = 5; | Variable deklarieren (immutable) |
| let mut x = 5; | Variable deklarieren (mutable) |
| // Kommentar | Einzeiliger Kommentar |
| /* */ | Mehrzeiliger Kommentar |
immutable. Verwenden Sie mut, wenn Sie eine Variable ändern möchten. Das fördert die Sicherheit und Lesbarkeit.
Rust ist eine statisch typisierte Sprache mit starker Typinferenz. Die wichtigsten Datentypen sind Ganzzahlen, Gleitkommazahlen, boolesche Werte, Zeichen und Strings.
| Typ | Größe | Bereich | Beispiel |
|---|---|---|---|
| i32 | 4 Byte | -2.147.483.648 bis 2.147.483.647 | 42 |
| u32 | 4 Byte | 0 bis 4.294.967.295 | 100 |
| i64 | 8 Byte | ±9.22e18 | 123456789 |
| f64 | 8 Byte | ±1.7e−308 bis ±1.7e+308 | 3.14159 |
| bool | 1 Byte | true / false | true |
| char | 4 Byte | Unicode-Zeichen | 'A' |
| String | variabel | UTF-8 Text | "Hallo".to_string() |
| &str | variabel | String-Slice (Referenz) | "Hallo" |
&str für Text, der nicht verändert werden muss (effizienter). Verwenden Sie String für veränderlichen Text auf dem Heap.
Ownership ist das zentrale Konzept von Rust für Speichersicherheit. Jeder Wert hat genau einen Besitzer. Bei Zuweisungen oder Übergaben an Funktionen wird der Besitz übertragen (move).
clone(), wenn Sie eine tiefe Kopie benötigen. Für einfache Typen (die das Copy-Trait implementieren) erfolgt keine Move-Operation.
Borrowing ermöglicht den Zugriff auf einen Wert, ohne den Besitz zu übernehmen. Es gibt unveränderliche (&T) und veränderliche (&mut T) Referenzen. Regeln: Entweder mehrere unveränderliche oder eine veränderliche Referenz.
Kontrollstrukturen in Rust ähneln denen anderer Sprachen, haben aber einige Besonderheiten. if kann auch einen Wert zurückgeben. loop ist eine Endlosschleife, while und for arbeiten mit Bedingungen bzw. Iteratoren.
for mit range (0..n) für zählergesteuerte Schleifen. Das ist idiomatischer und sicherer als while mit manuellem Zähler.
Pattern Matching ist ein mächtiges Feature in Rust. Mit match können Sie Werte auf verschiedene Muster abgleichen. if let und while let sind kompakte Alternativen für spezifische Muster.
match muss vollständig sein (alle Fälle abdecken). Verwenden Sie _ als Catch-All für alle nicht behandelten Fälle. if let ist kompakter, wenn Sie nur einen Fall interessiert.
fn
let
move
&
if
match
let x = 5; ·
let y = &x; ·
match value { Some(v) => v, None => 0 }