Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

String مقابل &str

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 54 من 66.

تمتلك لغة Rust نوعين أساسيين من السلاسل النصية يخدمان أغراضاً مختلفة: String و &str. إن فهم الفرق بينهما أمر بالغ الأهمية للعمل بفعالية مع النصوص في Rust.

الـ String هي سلسلة نصية مملوكة (owned) ومخصصة في الذاكرة المكدسة (heap-allocated) يمكنك تعديلها. عندما تنشئ String، يمتلك برنامجك تلك البيانات ويكون مسؤولاً عن إدارة ذاكرتها. يمكنك زيادتها، وتقليصها، وتغيير محتوياتها لأنها قابلة للتغيير (mutable) عند التصريح عنها باستخدام mut.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // هذا يعمل لأن String مملوكة وقابلة للتغيير

في المقابل، تُعد &str (تُنطق "string slice") عرضاً مستعاراً وغير قابل للتغيير لبيانات السلسلة النصية. فهي لا تملك البيانات التي تشير إليها - بل هي مجرد مرجع لمحتوى نصي موجود في مكان آخر. سلاسل النصوص الثابتة (String literals) مثل "Hello" هي في الواقع من النوع &str.

let my_slice: &str = "Hello World"; // هذه شريحة سلسلة نصية

فكر في String كامتلاك كتاب يمكنك الكتابة فيه وتعديله، بينما &str يشبه استعارة كتاب شخص آخر - يمكنك قراءته، لكن لا يمكنك تغييره. هذا التمييز أساسي لنظام الملكية (ownership system) في Rust ويساعد في ضمان سلامة الذاكرة.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

ورقة مرجعية

تمتلك لغة Rust نوعين أساسيين من السلاسل النصية:

  • String - سلسلة نصية مملوكة (owned)، مخصصة في الذاكرة الحيوية (heap-allocated)، وقابلة للتعديل (mutable)
  • &str - شريحة نصية مستعارة (borrowed)، غير قابلة للتعديل (immutable) (مرجع لبيانات السلسلة النصية)

إنشاء String:

let mut my_string = String::from("Hello");
my_string.push_str(" World");

تعتبر السلاسل النصية الحرفية (String literals) من نوع &str:

let my_slice: &str = "Hello World";

تمتلك String بياناتها ويمكن تعديلها، بينما &str هي مرجع لا يمكن تغييره.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow