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اختبر نفسك

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

جميع دروس Logic & Flow