Avatar ·

كيفية تحويل الأنواع الرقمية بأمان وبطريقة Idiomatic في Rust؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Rust بعد C++ وPython، وواجهت مشكلة خطيرة في تحويل الأرقام. في C++ اعتدت ببساطة كتابة `(int)my_float` أو `static_cast(value)`، وكان كل شيء يعمل. لكن في Rust، يشتكي المترجم باستمرار. إليك الموقف المحدد: أنا أكتب برنامجاً يحسب المتوسط الحسابي. لدي مصفوفة من الأعداد الصحيحة، وأحتاج إلى الحصول على النتيجة كرقم عشري. ```rust fn average(numbers: &[i32]) -> f64 { let sum: i32 = numbers.iter().sum(); sum / numbers.len() as f64 // هذا يعمل، لكنه يبدو غير مرتب } ``` يبدو أنه يعمل، لكني أشعر أن هذا غير صحيح. بالإضافة إلى ذلك، عندما أحاول إجراء التحويل العكسي — من `f64` إلى `i32` — يظهر المترجم خطأ بأنه لا يمكن ببساطة أخذ القيمة وتحويلها. على سبيل المثال: ```rust let x: f64 = 3.14; let y: i32 = x as i32; // هذا يعمل، لكن يتم فقدان البيانات ``` أفهم أن Rust يهتم بالسلامة، لكن كيف يمكن التحويل بشكل صحيح؟

لا توجد إجابات بعد.

تسجيل الدخول لترك إجابة

المدونات