Avatar ·

Как правильно определять зависимости только для тестов в Rust/Cargo?

مرحبًا الزملاء! بدأت في تعلم Rust وواجهت مشكلة عند كتابة الاختبارات. أحتاج إلى استخدام crate `rand` لتوليد بيانات عشوائية في الاختبارات، لكنني لا أريد أن يكون تابعًا في الإصدار النهائي. لقد أضفت `rand` في قسم `[dependencies]` في ملف `Cargo.toml`، لكن هذا يزيد من حجم الملف الثنائي ووقت الترجمة. كيف يمكنني إخراج التبعيات للاختبارات فقط بشكل صحيح؟ جربت كتابة: ```toml [dev-dependencies] rand = "0.8" ``` لكن بعد ذلك لا أستطيع الاستيراد في الاختبارات: `use rand::Rng;` — المترجم يشكو من عدم العثور على الـ crate. حاولت أيضًا استخدام `#[cfg(test)]` للترجمة الشرطية، لكنني لا أفهم كيفية تطبيقها بشكل صحيح على التبعيات. أرجو توضيح كيفية تنظيم تبعيات الاختبار (test-only dependencies) في Rust/Cargo؟ أحتاج إلى: 1. أن يتم تضمين الـ crates مثل `rand` و`tempfile` و`mockall` فقط عند تشغيل `cargo test`. 2. ألا تؤثر هذه الـ crates على الحجم ووقت الترجمة في إصدار الإنتاج (production). 3. الاختبارات