Avatar ·

Comment convertir des types numériques en Rust de manière sûre et idiomatique ?

Bonjour à tous ! Je viens de commencer à apprendre Rust après C++ et Python, et j'ai un sérieux problème avec la conversion de nombres. En C++, j'avais l'habitude d'écrire simplement `(int)my_float` ou `static_cast(value)`, et tout fonctionnait. Mais en Rust, le compilateur râle constamment. Voici une situation concrète : j'écris un programme qui calcule la moyenne arithmétique. J'ai un vecteur d'entiers et j'ai besoin d'obtenir le résultat sous forme de nombre à virgule flottante. ```rust fn average(numbers: &[i32]) -> f64 { let sum: i32 = numbers.iter().sum(); sum / numbers.len() as f64 // Ça marche, mais ça semble moche } ``` Ça a l'air de fonctionner, mais je sens que ce n'est pas correct. De plus, quand j'essaie de faire la conversion inverse — de `f64` à `i32` — le compilateur renvoie une erreur, disant qu'on ne peut pas simplement prendre et convertir. Par exemple : ```rust let x: f64 = 3.14; let y: i32 = x as i32; // Ça marche, mais on perd des données ``` Je comprends que Rust se soucie de la sécurité, mais comment convertir correctement