تأكد من تنظيم مشاريع Rust الخاصة بك بشكل جيد بحيث يسهل صيانتها بمرور الوقت.

الصدأ هو خيار ممتاز لبناء تطبيقات معقدة وموثوقة. تتمثل إحدى المهارات الأساسية لتطوير تطبيقات Rust في هيكلة مشاريعك بشكل فعال ، بما في ذلك دمج حزم الجهات الخارجية.

تنظيم المشروع الفعال أمر بالغ الأهمية لتطوير تطبيقات الصدأ. تعمل تطبيقات Rust جيدة التنظيم على تعزيز التعاون والتكامل السهل مع تطبيقات الجهات الخارجية ، مما يقلل بشكل كبير من الوقت والجهد اللازمين لتطوير التطبيقات. يوفر Rust مدير حزم مدمج وأدوات أخرى لتنظيم وإدارة الكود بشكل فعال.

إنشاء مشاريع الصدأ

يعد إعداد مشاريع Rust أمرًا سهلاً بمجرد تثبيت Rust على جهازك; يمكنك استخدام Cargo (مدير الحزم المدمج في Rust ونظام الإنشاء) لإنشاء وتكوين مشروع Rust. إنه مشابه لمديري الحزم الآخرين مثل npm لـ Node.js و بيثون. يدير Cargo التبعيات ويجمع الكود وينشئ الوثائق ، مما يجعله أداة أساسية لتطوير الصدأ.

قم بتشغيل هذا الأمر للتحقق من تثبيت Cargo الخاص بك:

البضائع - النسخة

يعرض الأمر إصدار Cargo المثبت.

يمكنك إنشاء مشروع Rust جديد بامتداد شحنة جديدة يأمر. ستحتاج إلى تحديد اسم المشروع.

instagram viewer
البضائع الجديدة my_project

سيقوم الأمر بإنشاء دليل جديد في الدليل الحالي يحتوي على الملفات الأساسية التي تحتاجها لمشروع Rust الخاص بك ، بما في ذلك ملف شحن ملف لإدارة تبعيات مشروعك.

مساحة اسم حزمة الصدأ

تعتبر العبوات والصناديق مكونات أساسية في الصدأ. الصناديق عبارة عن مكتبات أو ثنائيات يمكن لمطوري Rust استخدامها وتجميعها لبعض الاستخدامات المحددة ، والحزم عبارة عن مجموعة من الصناديق. تحتوي الحزم عادةً على صندوق يحتوي على رمز قابل لإعادة الاستخدام وثنائي يوفر CLI لصندوق المكتبة.

يجب أن تحتوي الصناديق على ملف Cargo.toml ملف يحتوي على بيانات أولية حول الحزمة ، مثل الاسم والإصدار والتبعيات والبرامج النصية للبناء.

تتبع حزم الصدأ اصطلاح تسمية لتجنب تعارض التسمية بين الحزم. يجب أن تكون أسماء الحزم فريدة بشكل عام وصغيرة وأن تحتوي فقط على أحرف وأرقام وواصلات. إذا كان اسم الحزمة يحتوي على كلمات متعددة ، فافصل بينها بواصلات ، على سبيل المثال هايبر الخادم.

يمكنك الوصول إلى الرمز داخل مساحة اسم حزمة Rust باستخدام امتداد يستخدم الكلمة الأساسية متبوعة بأسماء الحزمة والصندوق.

فيما يلي مثال على استيراد ملف Rng وظيفة من أ راند قفص:

يستخدم راند:: Rng ؛

يمكنك إنشاء مساحات أسماء متعددة للحزم. عند إنشاء مجلد ، تقوم بإنشاء مساحة اسم جديدة يمكنك الوصول إليها باستخدام علامة النقطة لتحديد المسار إلى المعرف.

في Rust ، يمكن أن يكون هناك مساحات أسماء متعددة للحزم. عند إنشاء مجلد ، تقوم بإنشاء مساحة اسم جديدة. للوصول إلى رمز من مساحة اسم أخرى ، يمكنك استخدام تدوين نقطي لتحديد المسار إلى المعرف.

فيما يلي مثال على الوصول إلى وظيفة من مساحة اسم مختلفة:

// ملف في مساحة اسم folder1
حانةالجبهة الوطنيةمجلد() -> u32 {
// بعض وظائف الجسم هنا
يعود0;
}

// ملف في مساحة اسم folder2
يستخدم folder1:: folder؛

حانةالجبهة الوطنيةالدليل() {
// الوصول إلى وظيفة المجلد من مساحة اسم folder1
يترك folder_func = folder () ،
}

يحدد البرنامج وحدتي Rust في مساحات أسماء مختلفة ، المجلد 1 و المجلد 2 على التوالى. ال المجلد 1 تحتوي الوحدة النمطية على وظيفة عامة مجلد يقوم بإرجاع قيمة عدد صحيح بدون إشارة 32 بت.

ال المجلد 2 تستورد الوحدة ملف مجلد وظيفة من المجلد 1 مع مساحة الاسم مع يستخدم الكلمة الرئيسية ، مما يسمح الدليل وظيفة للوصول إلى مجلد وظيفة من المجلد 1 وحدة. ال الدليل وظيفة تستدعي ال مجلد وظيفة ، ويتم تعيين قيمة الإرجاع إلى folder_func عامل.

ستحتاج إلى كتابة اسم المعرفات من حزمة أو صندوق بأحرف كبيرة لتصديرها. عندما تقوم بتصدير معرّف ، فإنك تجعله قابلاً للوصول في الحزم الأخرى التي تستخدم الرمز.

فيما يلي مثال على وظيفة عامة يمكن تصديرها.

// وظيفة يتم تصديرها إلى حزم وصناديق أخرى
حانةالجبهة الوطنيةوظيفتي() {
// بعض وظائف الجسم هنا
}

ستحتاج أيضًا إلى استخدام ملف حانة كلمة رئيسية. في Rust ، فإن حانة الكلمة الأساسية هي اختصار لـ عام. عندما تكون دالة ، هيكل ، تعداد ، أي نوع بيانات الصدأ أو يتم تمييز الوحدة النمطية بالكلمة الرئيسية pub ، فيمكن الوصول إليها خارج الوحدة النمطية الخاصة بها. العنصر خاص بوحدته بدون الكلمة الرئيسية pub ولا يمكن الوصول إليه إلا من داخله.

تحديد وحدات للتحكم في النطاق والخصوصية

يمكنك استخدام الوحدات النمطية للتحكم في النطاق والخصوصية في برامج Rust. تتيح لك الوحدات النمطية تنظيم التعليمات البرمجية في وحدات منطقية يسهل إدارتها وصيانتها.

يمكنك التصريح عن الوحدات بامتداد عصري الكلمة الأساسية متبوعة باسم الوحدة والأقواس المتعرجة. يؤدي تحديد وحدة نمطية جديدة إلى إنشاء مساحة اسم جديدة لمحتوياتها ، مما يعني أن الوظائف أو البنيات أو لا يمكن الوصول إلى العناصر الأخرى المحددة داخل الوحدة النمطية إلا داخل الوحدة النمطية باستثناء قيامك بالتصدير بشكل صريح هم.

تساعد الوحدات النمطية في منع تعارض التسمية ، مما يجعل الكود أكثر سهولة في الفهم.

إليك بنية وحدة بسيطة:

عصري my_module {
// محتويات الوحدة تذهب هنا
}

ضمن الوحدة النمطية ، يمكنك تحديد المتغيرات والوظائف والبنى والتعدادات والأنواع الأخرى.

عصري my_module {
الجبهة الوطنيةadd_numbers(أ: i32، ب: i32) -> i32 {
أ + ب
}
}

يمكنك استخدام ال حانة الكلمة الأساسية لتصدير الوظيفة والوصول إلى الوظيفة في أجزاء أخرى من البرنامج.

عصري my_module {
حانةالجبهة الوطنيةadd_numbers(أ: i32، ب: i32) -> i32 {
أ + ب
}
}

الآن ، يمكنك الاتصال بـ add_numbers تعمل من أجزاء أخرى من برنامجك.

يمكنك أيضًا التحكم في خصوصية الوحدات النمطية باستخدام ملف حانة الكلمات الرئيسية على تعريفات الوحدة.

حانةعصري my_module {
حانةالجبهة الوطنيةadd_numbers(أ: i32، ب: i32) -> i32 {
أ + ب
}
}

الآن ، my_module الوحدة العامة ، ويمكنك الوصول إلى الوحدة من الوحدات النمطية الأخرى.

إذا كنت بحاجة إلى جعل وحدة نمطية أو عنصرًا يمكن الوصول إليه من خلال وحدة نمطية معينة أو مجموعة من الوحدات النمطية ، فيمكنك استخدام حانة (قفص) كلمة رئيسية. ال حانة (قفص) تجعل الكلمة الأساسية العنصر يمكن الوصول إليه من الوحدات النمطية داخل نفس الصندوق ولكن ليس من الوحدات النمطية في الصناديق الأخرى.

عصري my_module {
حانةهيكلMyStruct {
حانة(قفص) بعض الحقول: u32,
}
}

يمكنك الآن الوصول إلى العنصر المحدد (في هذه الحالة ، ملف بعض الحقول مجال MyStruct Struct) في أجزاء أخرى من برنامجك.

الجبهة الوطنيةرئيسي() {
يترك my_struct = my_module:: MyStruct {some_field: 42 };
println!("{}"، my_struct.some_field) ؛
}

ال my_struct المتغير هو مثيل لـ MyStruct هيكل. يصل المتغير إلى الهيكل باستخدام فاصل المسار (: :). ال رئيسي تقوم الوظيفة بطباعة ملف بعض الحقول مجال الهيكل مع println! دقيق.

يضمن نموذج ملكية Rust سلامة الذاكرة

يعد تنظيم كود Rust أحد الطرق لضمان سهولة الحفاظ على التعليمات البرمجية الخاصة بك ودعمها بمرور الوقت. من الأسهل معالجة الأخطاء وضمان السلامة في تعليمات برمجية جيدة التنظيم تتبع قواعد واتفاقيات مجتمع Rust.

بشكل افتراضي ، يضمن Rust أن تكون البرامج آمنة للذاكرة مع نموذج ملكية مدمج. يضمن نموذج الملكية سلامة الذاكرة من خلال التأكد من أن المتغيرات في الذاكرة لها مالك فريد واحد. يمنع نموذج الملكية تتبع البيانات والعديد من أنواع أخطاء الذاكرة.