Avatar ·

Wie man numerische Typen in Rust sicher und idiomatisch konvertiert

Hallo zusammen! Ich habe gerade angefangen, Rust nach C++ und Python zu lernen, und habe ein ernsthaftes Problem mit der Zahlenkonvertierung. In C++ war ich es gewohnt, einfach `(int)my_float` oder `static_cast(value)` zu schreiben, und alles funktionierte. Aber in Rust beschwert sich der Compiler ständig. Hier ist die konkrete Situation: Ich schreibe ein Programm, das den arithmetischen Mittelwert berechnet. Ich habe einen Vektor von ganzen Zahlen und muss das Ergebnis als Gleitkommazahl erhalten. ```rust fn average(numbers: &[i32]) -> f64 { let sum: i32 = numbers.iter().sum(); sum / numbers.len() as f64 // Das funktioniert, sieht aber umständlich aus } ``` Es scheint zu funktionieren, aber ich habe das Gefühl, dass das nicht richtig ist. Außerdem, wenn ich versuche, die umgekehrte Konvertierung durchzuführen – von `f64` nach `i32` – gibt der Compiler einen Fehler aus, dass man das nicht einfach so machen kann.