Avatar ·

Wie übergibt man eine Funktion als Parameter in Rust?

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und habe ein Problem, das einfach erscheint, aber ich finde keine richtige Lösung. Ich möchte eine Funktion schreiben, die eine andere Funktion als Argument nimmt, um den Code flexibler zu machen. Hier ist, was ich versuche: ```rust fn apply_twice(f: ???, x: i32) -> i32 { f(f(x)) } fn add_one(x: i32) -> i32 { x + 1 } fn main() { let result = apply_twice(add_one, 5); println!("{}", result); // Erwarte 7 } ``` Ich verstehe nicht, welchen Typ ich für den Parameter `f` angeben soll. Ich habe `fn(i32) -> i32` versucht, aber der Compiler meckert. Ich habe auch von Closures und den Traits `Fn`, `FnMut`, `FnOnce` gehört – aber was ist der Unterschied? Wann verwendet man welchen? Wie übergibt man eine Closure, die Variablen aus dem äußeren Gültigkeitsbereich erfasst? Bitte erklärt mir, wie man Funktionen und Closures in Rust richtig übergibt. Gerne mit Codebeispielen. Danke im Voraus! <<>>

Grundlegende Ansätze zur Übergabe von Funktionen in Rust