تخطَّ إلى المحتوى

🦀 شرح Rust

الملكية (Ownership) بعمق

الدرس 9 من 25· ⏱ 1 دقائق قراءة

قواعد الملكية الثلاث

  1. لكل قيمة مالك واحد.
  2. لا يمكن إلا مالك واحد في كل لحظة.
  3. عند خروج المالك من النطاق، تُحرَّر القيمة تلقائيًا.

هذا يضمن أمان الذاكرة دون جامع قمامة (Garbage Collector).

النقل (Move)

let s1 = String::from("مرحبًا");
let s2 = s1;            // نُقلت الملكية إلى s2
// println!("{}", s1); // خطأ! s1 لم تعد صالحة

النسخ (Copy)

الأنواع البسيطة (الأرقام، bool، char) تُنسَخ بدل النقل:

let x = 5;
let y = x;             // نسخة
println!("{x} {y}");   // كلاهما صالح

الدوال والملكية

fn takes(s: String) { /* تملك s */ }

let s = String::from("hi");
takes(s);
// s لم تعد صالحة هنا (نُقلت)

لتجنّب النقل المتكرّر نستخدم الاستعارة (الدرس التالي).

🎯 التالي: الاستعارة والمراجع.

هل كان هذا الدرس مفيدًا؟