الدرس3 / 4
تجهيز بيئة العمل
قراءة
اللي هتفهمه
- إعداد VS Code و rust-analyzer، والفرق بينه وبين مجرد تلوين الكود.
- المصيدتين اللي بيوقّفوا الإضافة، وليه كل واحدة منهم بتحصل.
- تفعيل التنسيق التلقائي عند الحفظ.
الشرح
تقدر تكتب Rust في أي محرر نصوص، بس هتضيّع على نفسك حاجة مهمة. الأداة الرسمية
اللي بتخلّي المحرر يفهم كودك اسمها rust-analyzer، وهي مش مجرد ملوّن كود.
هي بتشغّل نفس تحليل الأنواع اللي الكومبايلر بيعمله، وبتحدّثه وإنت بتكتب. النتيجة
إن أخطاء الملكية والاستعارة — اللي هي أصعب حاجة في أول أسبوعين — بتظهرلك في نفس
اللحظة، مش بعد ما تشغّل cargo build. الفرق في سرعة التعلّم كبير جداً.
التثبيت
- نزّل VS Code.
- من تبويب الإضافات، دوّر على
rust-analyzerوثبّتها. - شيل الإضافة القديمة اسمها
Rustلو مثبتة عندك.
النقطة التالتة مهمة. الإضافة القديمة كانت بتستخدم rls، وده اتوقف دعمه رسمياً.
لو الاتنين مثبتين، بيتعارضوا وبتلاقي أخطاء وهمية أو إكمال ناقص، والسبب مش واضح
خالص من الأعراض.
المرئي
مفيش مرئي في الدرس ده.
الكود
مفيش كود. فيه أمرين وملف إعدادات.
ليه بيشتغل كده
المصيدة الأولى: rust-analyzer محتاج Cargo.toml في جذر مساحة العمل
rust-analyzer مش بيحلل ملفات مفردة — بيحلل مشروع cargo. وعشان يلاقيه، بيدوّر
على Cargo.toml في جذر المجلد اللي إنت فاتحه، مش جنب الملف اللي إنت شغال عليه.
يعني لو فتحت المجلد اللي فيه كل مشاريعك:
projects/ ← فاتح ده
hello/
Cargo.toml ← وده هنا، مستوى تحت
src/main.rsهو هيبص في projects/، مش هيلاقي حاجة، وهيوقف. افتح مجلد المشروع نفسه:
code ~/projects/helloولو عايز أكتر من مشروع مفتوحين مع بعض، اعمل Cargo.toml في projects/ فيه:
[workspace]
resolver = "2"
members = ["hello", "guessing_game"]الشرح الكامل والأعراض التانية في rust-analyzer مش شغال.
المصيدة التانية: VS Code المفتوح من الأيقونة مش بيشوف ~/.cargo/bin
لو فتحت VS Code من أيقونة سطح المكتب، هو مش بيبدأ من shell — فهو مش بيقرا
~/.profile، ومش بيورث PATH اللي فيه ~/.cargo/bin. النتيجة إن cargo شغال
في التيرمنال العادي وبيقول command not found جوه المحرر:
bash: cargo: command not foundالحل: افتح المحرر من التيرمنال.
cd ~/projects/hello
code .كده هو بيورث كل المسار من الـ shell اللي شغّله. النقطة معناها “افتح المجلد الحالي” — وهي كمان بتحل المصيدة الأولى في نفس الوقت، لأنك بتفتح مجلد المشروع بالظبط.
الحلول التانية والشرح الكامل في cargo: command not found جوه VS Code.
الإعدادات المقترحة
اعمل ملف .vscode/settings.json جوه المشروع:
{
"editor.formatOnSave": true,
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
},
"rust-analyzer.check.command": "clippy"
}formatOnSaveبينده علىrustfmtكل ما تحفظ. النتيجة إن كودك يبقى بنفس شكل كل كود Rust في العالم — وده بيوفّر نقاش كامل عن التنسيق، وبيخلي أي كود تشوفه على الإنترنت مألوف على طول.check.command: clippyبيخلّي المحرر يشغّلclippyبدلcargo check. يعني بتشوف اقتراحات التحسين وإنت بتكتب، مش الأخطاء بس.
تمرين
اعمل مجلد فاضي، افتحه في VS Code، واعمل جواه ملف test.rs فيه:
fn main() {
let x = 5;
}بص على المحرر: هل ظهرلك تحذير unused variable: x؟ وبعدين اعمل cargo init في
نفس المجلد، انقل الملف لـ src/main.rs، وأعد تحميل النافذة. اتفرج على الفرق.
الحل
في الحالة الأولى مش هيظهر أي تحذير. المجلد مفهوش Cargo.toml، فـ
rust-analyzer مش عارف الملف ده جزء من إيه — مش عارف الإصدار، ولا الـ features،
ولا التبعيات. من غير المعلومات دي هو ميقدرش يحلل، فبيوقف بدل ما يديك نتايج غلط.
بعد cargo init والنقل، التحذير بيظهر على طول — بيقولك إن x اتعرّف ومااتستخدمش،
وبيقترح تحط _ قبل الاسم لو ده مقصود:
warning: unused variable: `x`
--> src/main.rs:2:9
|
2 | let x = 5;
| ^ help: if this is intentional, prefix it with an underscore: `_x`
|
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by defaultrustc 1.97.1 (8bab26f4f 2026-07-14)
الفرق ده هو كل الدرس: الأداة بتحلل مشروع، مش ملف. ولما تفتكرها بتاعت ملفات وتفتح المجلد الغلط، بتلاقيها “مش شغالة” من غير أي رسالة خطأ تشرح ليه.
النقاش
لو عندك سؤال أو لقيت غلطة في الصفحة دي، اكتبها فيالنقاشات على GitHub. كل صفحة ليها موضوعها الخاص.