Avatar ·

Wie man eine Funktion als Parameter in Rust übergibt?

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und bin auf ein Problem gestoßen. In anderen Sprachen wie Python oder JavaScript kann ich problemlos eine Funktion als Argument an eine andere Funktion übergeben. Zum Beispiel: ```python def apply(func, x): return func(x) def double(x): return x * 2 result = apply(double, 5) ``` In Rust habe ich versucht, etwas Ähnliches zu machen, aber der Compiler gibt Fehler aus. Hier ist mein Code: ```rust fn apply(func: ???, x: i32) -> i32 { func(x) } fn double(x: i32) -> i32 { x * 2 } fn main() { let result = apply(double, 5); println!("{}", result); } ``` Ich verstehe nicht, welchen Typ ich für den Parameter `func` angeben soll. Ich habe versucht, `fn(i32) -> i32` zu schreiben, aber das hat nicht funktioniert. In der Dokumentation steht etwas über die Traits `Fn`, `FnMut` und `FnOnce`, aber ich bin verwirrt, welchen ich verwenden soll und wie man solche Funktionen richtig deklariert. Könnt ihr mir erklären, wie man eine Funktion korrekt als Parameter in Rust übergibt? Am liebsten mit anschaulichen Beispielen. <<>>

Verwendung der F-Traits