Funktionen sind in Rust das zentrale Baustein-Element. Die Syntax ist kompakt, die Semantik präzise: Parameter haben verpflichtende Typen, der Rückgabe-Typ ist explizit, und der Body ist eine Sequenz von Statements mit optionaler tail expression als Rückgabe-Wert. Dieses Kapitel behandelt alle Aspekte der Funktions-Definition: vom einfachen fn add(a: i32, b: i32) -> i32-Hello-World bis zu Funktions-Pointern als First-Class-Werten. Closures, Higher-Order-Functions und der Fn/FnMut/FnOnce-Trait-Familie bekommen ein eigenes Kapitel im Closures-und-Iterators-Bereich.
Was dich erwartet
- fn-Deklaration — die Syntax-Grundlagen, Naming-Konventionen, Sichtbarkeit mit
pubund ein erster Blick auf generische Funktionen. - Expressions vs. Statements — der Semikolon ist in Rust eine Bedeutungs-Grenze. Mit Semikolon wird aus einer Expression ein Statement vom Typ
(). Ohne Semikolon wird sie zur tail expression — und damit zum Rückgabewert des Blocks. - Parameter und Rückgabe — Pass-by-Value als Default, Pass-by-Reference mit
&Tund&mut T, Tupel als Mehrfach-Rückgabe, der Builder-Pattern-Stil mitSelf-Return. - Divergierende Funktionen — Funktionen mit Rückgabe-Typ
!(Never). Sie kehren nie zurück und sind das richtige Werkzeug für Panic-Helper, Process-Exit und Server-Loops. - Funktions-Pointer und fn-Typen — eine Funktion in Rust ist auch ein Wert. Der Typ
fn(i32) -> i32lässt sich in Variablen speichern, als Argument übergeben und als Rückgabe zurückgeben — abgegrenzt zu Closures.
Was du nach diesem Kapitel kannst
- Funktionen syntaktisch sauber deklarieren — mit explizitem Rückgabe-Typ, korrektem Pass-Modus und idiomatischen Naming-Konventionen.
- Die Semikolon-Falle gezielt einsetzen oder bewusst vermeiden — du erkennst, wann eine Expression mit Semikolon zu einer Anweisung wird und wann nicht.
- Pass-by-Value, Pass-by-Reference und Pass-by-mutable-Reference je nach Bedarf wählen.
- Mehrere Werte als Tupel zurückgeben — und entscheiden, wann ein Struct die bessere Wahl wäre.
- Divergierende Funktionen mit Never-Return schreiben und einsetzen.
- Funktionen als Werte behandeln — speichern, weitergeben, zurückgeben.
Das nächste Kapitel ist eines der zentralen in der gesamten Rust-Doku: Ownership — das Konzept, das Rusts Memory-Safety ohne Garbage-Collector ermöglicht.
Weiterführende Ressourcen
Externe Quellen
- The Rust Book – Functions
- Rust Reference – Functions
- Rust by Example – Functions
- Rust API Guidelines – Naming