Avatar ·

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 ein Problem mit dem Konzept der anonymen Typen. Ich habe gelesen, dass in Rust jedes Closure-Literal seinen eigenen eindeutigen, unbenennbaren 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` verschiedene 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 der eindeutigen anonymen Typen gegangen? 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```