اقرأها من الجذر. كل سهم ⇒ يعني "يُشتقّ مباشرة من". كل ⟷ يعني "نفس النمط، سياق مختلف" (تكرار متباعد كاستعمال، لا كشرح).
٠٠ الثبات افتراضًا + كل شيء تعبير
│
▼
┌─────────────────────────────────────────┐
│ البديهية ١ (٠١) البديهية ٢ (٠٢) │
│ مالك واحد بالضبط مشاركة XOR تعديل │
│ move / Copy / Drop &T / &mut T │
└──────────────┬──────────────┬─────────────┘
│ │
┌────────────┘ └────────────┐
▼ ▼
٠٣ الأنواع الجبرية ٠٥ تسمية الزمن
enum = اتحاد موسوم 'a = اسم لعلاقة موجودة
Option (⇒ لا NULL) عمر دالة / عمر بنية
Result (⇒ لا استثناءات) قواعد الحذف الثلاث
match exhaustive 'static
│ │
▼ │
٠٤ التجريد بلا ثمن │
trait ⇒ قيد على generic │
monomorphization (⇒ عكس erasure TS) │
static (impl T) ⟷ dynamic (dyn T) │
self/&self/&mut self ⟷⟷⟷ [الثلاثية] │
│ │
└──────────────────┬──────────────────────┘
▼
٠٦ خط الإنتاج
Fn/FnMut/FnOnce ⟷⟷⟷ [الثلاثية مجددًا: التقاط]
for x in v/&v/&mut v ⟷⟷⟷ [الثلاثية مرة ثالثة]
Iterator::next ⇒ Option (٠٣ يعمل هنا فعليًا)
كسل + صفر تخصيص (⇒ زيرو-كوست ٠٤ مطبَّقة)
UTF-8: char/String/chars()/char_indices()
★ معلم: أداة بحث نصية (mini-grep)
│
┌───────────────────┴───────────────────┐
▼ ▼
٠٧ تليين القوانين (تمهيد لـ) ٠٨
Box<T>: تمليك في عنوان آخر البديهيتان تُطبَّقان
Deref/DerefMut (⇒ &String→&str من ٠٢) حرفيًا على الخيوط
Rc<T>: البديهية ١ تتفاوض (مالك = مجموعة) بلا أي قاعدة جديدة
RefCell<T>: البديهية ٢ تتفاوض (فحص→تشغيل)
Weak<T>: يكسر الدوائر (⇒ يفي بتحفظ ٠١)
★ معلم: شجرة/بنية ذاتية-الإشارة
│
▼
٠٨ تزامن بلا خوف
Send/Sync (سمتان تلقائيتان بلا طرق)
Arc/Mutex ⟷ Rc/RefCell (نفس الشكل، ذرّي)
thread::spawn ('static + Send ⇐ يُقرأ الآن بمعنى كامل)
channels (mpsc) ⇐ move يحرس التزامن أيضًا
│
▼
٠٩ كسر الختم
unsafe = ٥ قدرات محدَّدة، لا إطفاء عام
*const T / *mut T (بلا قواعد البديهية ٢)
alloc/dealloc/Layout ⟷ malloc/free (C)
ptr::write/read (بلا Drop زائف)
★★ المعلم الأكبر: MyVec<T> من الصفر
│
▼
١٠ اللغة الثانية
Future/Poll ⟷⟷⟷ Option/Result (نفس الشكل، "لاحقًا" لا "أبدًا")
async fn ⇒ enum آلة حالة (٠٣ يعمل هنا أيضًا)
executor خارج std (⇐ عكس قرار Node/libuv)
Pin ⇐ يحرس ضد نقل (move، ٠١) لبنية ذاتية-الإشارة
tokio::spawn ⟷ thread::spawn (مهمة خفيفة لا خيط نظام)
★ معلم: منفّذ مصغّر
★★★ الكابستون: خادم TCP متزامن (يدمج ٠٣+٠٦+٠٨+١٠ + الشبكات)
الأنماط المتكررة (لا تحفظها كقائمة — تعرّف عليها حين تظهر)
| النمط | أين ظهر | لماذا نفس النمط |
{تمليك، &، &mut} | استقبال الطرق (٠٤)، التقاط الإغلاقات (٠٦)، أنماط for (٠٦) | ثلاث طرق فقط للوصول لقيمة، مهما كان السياق النحوي |
enum بفرعين: قيمة/غياب | Option (٠٣)، Result (٠٣)، Poll (١٠) | نفس الشكل يحل ثلاث مشاكل: غياب، فشل، تأخّر |
| Static مقابل Dynamic dispatch | generics/trait (٠٤)، إغلاقات كـimpl Fn/dyn Fn (٠٦) | نفس المقايضة: سرعة+تكاثر مقابل مرونة+تكلفة قفزة |
| فحص يتحرك بالزمن | borrow checker (ترجمة، مجاني) → RefCell/Mutex (تشغيل، panic) → unsafe (لا فحص، UB) | نفس الالتزام (لا alias+mutate معًا)، ثلاث مستويات ثقة مختلفة في من يثبته |
| توءمان خيط-واحد/متعدد-خيوط | Rc↔Arc، RefCell↔Mutex (٠٧، ٠٨) | نفس الفكرة، نسخة ذرّية حين يتعدد المنفّذ الفعلي |
جدول الإحالة لأصول خارج هذا المنهج
| المفهوم هنا | مبني فوق | من منهج |
| ownership/Drop كانضباط مُثبَت | malloc/free اليدوي، أخطاء الذاكرة الثلاثة | C — Holberton |
| enum/match/exhaustiveness | discriminated unions، إغلاق never | TypeScript |
| generics/monomorphization مقابل erasure | generics TS، variance | TypeScript |
| closure = كود+بيئة | closures JS، callbacks/hooks | fullstack |
| C10K، event loop، libuv/epoll | مشكلة التزامن، Node = V8+libuv | fullstack |
| الكابستون: TCP، sockets، منافذ | بروتوكولات النقل، أدوات السلك (nc) | Network_Holberton |