كيفية إنشاء حزمة في Rust تحتوي على مكتبة (lib) وملف تنفيذي (bin)؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم Rust وأحاول فهم تنظيم المشاريع. لدي مهمة: أريد كتابة أداة صغيرة للعمل مع ملفات CSV. لكن في نفس الوقت، أريد أن يكون المنطق الأساسي (التحليل، التصفية) قابلاً لإعادة الاستخدام في مشاريع أخرى كمكتبة.
حاليًا، مشروعي يبدو هكذا:
```
my_project/
├── Cargo.toml
├── src/
│ └── main.rs
```
في `main.rs`، كتبت كلاً من التحليل وعرض النتائج. هذا غير مريح: إذا أردت استخدام نفس المحلل في مشروع آخر، سأضطر لنسخ الكود.
قرأت أنه في Rust يمكن عمل حزمة تحتوي على `lib.rs` (مكتبة) و `main.rs` (ملف تنفيذي). لكنني لا أفهم كيفية تكوين ذلك بشكل صحيح. في `Cargo.toml`، لا أرى تعليمات واضحة. كيف يعرف Cargo أن لدي ملفين مستهدفين؟ هل يمكنني من `main.rs` استدعاء دوال من `lib.rs`؟ وكيف أنظم هيكل المجلدات بشكل صحيح؟ هل أحتاج إلى تحديد شيء في `Cargo.toml`؟
من فضلكم، أرشدوني إلى كيفية القيام بذلك بشكل صحيح. مثال