الدرس2 / 4
تثبيت Rust
قراءة
اللي هتفهمه
- إزاي تثبّت Rust بالطريقة الرسمية، وليه rustup مش مدير حزم النظام.
- إيه التلات أدوات اللي بتتثبّت، ودور كل واحدة فيهم.
- إزاي تتأكد إن التثبيت نجح فعلاً، وإزاي تحدّث أو تشيل كل حاجة.
الشرح
Rust بتتثبّت بأداة رسمية اسمها rustup. مش apt ولا brew ولا أي مدير حزم
تاني — ودي مش تفصيلة شكلية.
rustup بيدير إصدارات الكومبايلر، مش نسخة واحدة. يعني تقدر يكون عندك
stable وnightly مع بعض، وتحدّد لكل مشروع إصدار مختلف، وترجع لإصدار قديم لو
مشروع محتاجه. مدير حزم النظام بيعرف يثبّت نسخة واحدة، وغالباً بتكون قديمة بشهور.
فيه سبب تاني عملي أكتر: rustup بيثبّت كل حاجة جوه مجلدك إنت (~/.cargo
و~/.rustup)، من غير صلاحيات مدير، ومن غير ما يلمس النظام. الشيل كمان بيبقى
سطر واحد ومفيش أي أثر بيفضل.
لينكس وmacOS
سطر واحد في التيرمنال:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shهيسألك سؤال، ورد بـ 1 أو بس اضغط Enter — الاختيار الافتراضي هو اللي إنت
عايزه.
بعد ما يخلص، اقفل التيرمنال وافتحه من جديد. الخطوة دي مش اختيارية: المثبّت
بيضيف سطر لملف إعدادات الـ shell عندك، والملف ده بيتقرا وقت بداية الجلسة بس.
من غير إعادة فتح، الـ shell الحالي لسه مش عارف إن cargo موجود.
لو مش عايز تقفل التيرمنال:
source "$HOME/.cargo/env"ويندوز
الطريقة الأسهل والأنضف هي WSL — بتشغّل لينكس جوه ويندوز، وبتستخدم نفس الأمر اللي فوق بالظبط. كل أدوات Rust بتشتغل هناك من غير أي تعديل.
لو عايز Rust على ويندوز نفسه، حمّل rustup-init.exe من
rustup.rs. خد بالك إن الكومبايلر على ويندوز محتاج أدوات بناء
من Microsoft (Visual Studio Build Tools مع C++ build tools)، والمثبّت هيعرض
يجيبهالك لو مش موجودة. وافق — من غيرها التثبيت هيخلص بس أول cargo build هيفشل.
المرئي
مفيش مرئي في الدرس ده.
الكود
مفيش كود. بس فيه تلات أوامر لازم تشتغل عندك قبل ما تكمل.
ليه بيشتغل كده
المثبّت بيحط تلات برامج في ~/.cargo/bin:
| الأداة | بتعمل إيه |
|---|---|
rustc | الكومبايلر نفسه. نادراً هتنده عليه مباشرة. |
cargo | مدير المشاريع والحزم. ده اللي هتستخدمه كل يوم. |
rustup | بيدير الإصدارات. هتستخدمه لما تحدّث بس. |
وبيضيف ~/.cargo/bin لمتغير PATH عن طريق سطر في ~/.profile أو ~/.bashrc
أو ~/.zshenv، حسب الـ shell بتاعك:
. "$HOME/.cargo/env"السطر ده هو سبب أشهر مشكلة بعد التثبيت. لو cargo شغال في التيرمنال العادي
وبيقول command not found جوه VS Code، ده مش عطل — ده لأن VS Code المفتوح من
الأيقونة مش بيورث PATH من الـ shell. الشرح الكامل والحل في
cargo: command not found جوه VS Code.
اتأكد إن كل حاجة تمام
شغّل التلات أوامر دول. لو أي واحد فيهم رد بـ command not found، التثبيت مخلصش
صح أو الـ PATH لسه مش متحدّث:
rustc --version
cargo --version
rustup --versionالمفروض تشوف حاجة شبه كده — الأرقام عندك هتبقى أحدث، وده عادي:
rustc 1.97.1 (8bab26f4f 2026-07-14)
cargo 1.97.1 (c980f4866 2026-06-30)
rustup 1.29.0 (28d1352db 2026-03-05)خد بالك إن رقم rustup مختلف تماماً عن التانيين، وده مقصود: rustup أداة
منفصلة ليها دورة إصدار خاصة بيها. هو نفسه بينبّهك للفرق ده لو شغّلت الأمر:
rustup 1.29.0 (28d1352db 2026-03-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: the currently active `rustc` version is `rustc 1.97.1 (8bab26f4f 2026-07-14)`التحديث والشيل
تحديث كل حاجة لأحدث إصدار مستقر:
rustup updateوشيل كل حاجة، من غير أي أثر:
rustup self uninstallالأمر ده بيمسح ~/.cargo و~/.rustup وبيشيل السطر من ملف الـ shell. مفيش أي
حاجة بتفضل في النظام — لأن مكانش فيه أي حاجة في النظام من الأصل.
تمرين
شغّل الأمر ده وبص على الناتج:
ls ~/.cargo/binهتلاقي فيه أكتر من التلات أدوات اللي فوق. حاول تخمّن دور تلاتة منهم:
rustfmt وclippy-driver وrustdoc.
الحل
عندي، الناتج كان:
cargo
cargo-clippy
cargo-fmt
cargo-miri
clippy-driver
rls
rust-analyzer
rustc
rustdoc
rustfmt
rust-gdb
rust-gdbgui
rust-lldb
rustuprustfmt— منسّق الكود الرسمي. بيرتّب المسافات والأسطر بشكل موحّد. الأمر اللي هتستخدمه فعلاً هوcargo fmt، وهو بينده على ده.clippy-driver— أداة فحص بتقترح تحسينات أعمق من الكومبايلر: أنماط أوضح، وطرق أسرع، وأخطاء منطقية شائعة. بتستخدمها بـcargo clippy.rustdoc— بيولّد توثيق HTML من التعليقات اللي في كودك.cargo doc --openبيبني التوثيق ويفتحه في المتصفح — وده بيشمل توثيق كل مكتبة إنت مستخدمها.
خد بالك من rust-analyzer في القايمة — دي الأداة اللي بتخلّي المحرر يفهم كودك،
وهي موضوع الدرس الجاي.
النقاش
لو عندك سؤال أو لقيت غلطة في الصفحة دي، اكتبها فيالنقاشات على GitHub. كل صفحة ليها موضوعها الخاص.