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 pub und 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 &T und &mut T, Tupel als Mehrfach-Rückgabe, der Builder-Pattern-Stil mit Self-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) -> i32 lä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

/ Weiter

Zurück zu Funktionen

Zur Übersicht