كيفية إنشاء حزمة في Cargo تحتوي على مكتبة وملف تنفيذي؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم Rust وأحاول تنظيم مشروعي. لدي بعض المنطق الذي أريد إعادة استخدامه: على سبيل المثال، دوال للعمل مع الأرقام (المضروب، أرقام فيبوناتشي). أريد جعل هذه الدوال متاحة كمكتبة (بحيث يمكن استيرادها في مشاريع أخرى باستخدام `use`)، ولكن في نفس الوقت يكون لدي ملف تنفيذي (binary) يتم تشغيله ويعرض عمل هذه الدوال عبر وحدة التحكم.
لقد أنشأت مشروعًا باستخدام `cargo new my_project`، وأنشأ فقط `src/main.rs`. قرأت أنه يمكن إضافة `src/lib.rs`، ولكن كيف يمكن ضبط `Cargo.toml` بشكل صحيح؟ هل أحتاج إلى كتابة شيء مثل `[lib]` أو `[[bin]]`؟ وكيف يمكن تشغيل الملف التنفيذي إذا أردت استخدامه، والمكتبة لاستيرادها في كريتات أخرى؟
هذا مثال لما أحاول فعله:
```rust
// src/lib.rs
pub fn factorial(n: u64) -> u64 {
(1..=n).product()
}
```
```rust
// src/main.rs
mod lib; // هل هذا ممكن؟
fn main() {