Avatar ·

كيفية إنشاء حزمة في 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() {