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, nicht benennbaren Typ hat. Zum Beispiel dieser Code:
```rust
let add_one = |x: i32| x + 1;
let double = |x: i32| x * 2;
```
Ich verstehe, dass `add_one` und `double` verschiedene Closures mit verschiedenen 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, das erschwert das Schreiben von generischem Code, besonders wenn ich ein Closure an eine Funktion übergeben oder in einer Struktur speichern möchte. Zum Beispiel kann ich nicht einfach schreiben:
```rust
fn apply(f: ???, x: i32) -> i32 {
f(x)
}
```
Ich muss Generics oder `Box` verwenden. Ist das normal? Oder übersehe ich etwas? Wie entwirft man Code unter Berücksichtigung dieser Besonderheit? Ich wäre dankbar für eine Erklärung mit Beispielen.