Как правильно определять зависимости только для тестов в 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. الاختبارات