Funktionen ·
Closures ·
Traits ·
Generics ·
Makros ·
Module
Diese Syntax-Elemente sind essenziell für die Entwicklung komplexer und wiederverwendbarer Rust-Anwendungen – von der Fehlerbehandlung bis zur Code-Organisation.
Funktionen sind wiederverwendbare Codeblöcke. Rust-Funktionen können Werte zurückgeben – entweder mit return oder als impliziter Ausdruck (letzte Anweisung ohne Semikolon).
return nur für frühe Rückgaben (Early Returns).
Closures sind anonyme Funktionen, die Variablen aus ihrem umgebenden Scope erfassen können. Sie implementieren die Traits Fn, FnMut oder FnOnce.
move bei Closures, wenn Sie den Besitz von erfassten Werten übertragen möchten – z.B. für Threads. Closures ohne move borgen nur.
Traits definieren gemeinsames Verhalten für verschiedene Typen. Sie sind ähnlich wie Interfaces in anderen Sprachen und ermöglichen Polymorphie.
#[derive] für häufige Traits wie Debug, Clone, PartialEq – das spart Boilerplate-Code.
Generics ermöglichen die Erstellung von wiederverwendbaren Code mit verschiedenen Typen. Sie sind eine der Säulen der Rust-Typsicherheit.
where-Syntax bei mehreren Trait Bounds – das verbessert die Lesbarkeit. Generische Parameter werden in <> deklariert.
Makros erzeugen Code zur Kompilierzeit. Sie sind mächtiger als Funktionen, da sie mit der Syntax arbeiten können. Bekannte Makros sind println!, vec! und assert!.
Module organisieren Code in logische Einheiten. Mit pub werden Elemente nach außen sichtbar. use importiert Elemente in den Scope.
use kann mit geschweiften Klammern mehrere Importe gruppieren: use std::io::{self, Write};
fn
||
trait
<T>
!
mod
fn add<T: Add>(a: T, b: T) -> T { a + b } ·
let f = |x| x * 2; ·
trait Display { fn fmt(&self) -> String; }