Warum gibt es in Rust eindeutige anonyme Typen und wie arbeitet man mit ihnen?
Hallo zusammen! Ich habe vor kurzem angefangen, Rust zu lernen, und habe Schwierigkeiten, das Konzept der anonymen Typen zu verstehen. Ich habe gelesen, dass in Rust jedes Closure-Literal seinen eigenen eindeutigen, nicht benennbaren Typ hat. Zum Beispiel dieser Code:\n\n```rust\nlet add_one = |x: i32| x + 1;\nlet double = |x: i32| x * 2;\n```\n\nIch verstehe, dass `add_one` und `double` unterschiedliche Closures mit unterschiedlichen Typen sind. Aber warum wurde das so gemacht? In C++ oder anderen Sprachen kann ich einfach einen Funktionszeiger deklarieren oder `std::function` verwenden. Warum ist Rust den Weg gegangen, eindeutige anonyme Typen zu erstellen? Mir scheint, dass dies das Schreiben von generischem Code erschwert, besonders wenn ich ein Closure an eine Funktion übergeben oder in einer Struktur speichern möchte. Zum Beispiel kann ich nicht einfach schreiben:\n\n```rust\nfn apply(f: ???, x: i32) -> i32 {\n f(x)\n}\n```