0Pricing
Learn Rust Coding · درس

Strings و&str

نصوص مملوكة ومستعارة

Strings و&str درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

نوعا String

يوفر Rust نوعين أساسيين للنصوص:

  • String — سلسلة نصية مملوكة وقابلة للنمو.
  • &str — شريحة نصية مستعارة، وهي عرض لجزء من النص.
fn main() {
    let owned: String = String::from("hello");
    let borrowed: &str = "world";
    println!("{} {}", owned, borrowed);
}

ثوابت السلاسل النصية هي &str

عند كتابة نص بين علامتي اقتباس مزدوجتين، تحصل على &str. وهو ثابت ومخزن في الملف التنفيذي للبرنامج.

fn main() {
    let greeting = "Hi there"; // type is &str
    println!("{}", greeting);
}

إنشاء String

أنشئ قيمة مملوكة من النوع String باستخدام String::from أو الطريقة .to_string().

fn main() {
    let a = String::from("abc");
    let b = "xyz".to_string();
    println!("{} {}", a, b);
}

زيادة حجم String

بما أن String مملوك وقابل للنمو، يمكنك إلحاق نص به باستخدام push_str وpush.

fn main() {
    let mut s = String::from("Hello");
    s.push_str(", ");
    s.push_str("Rust");
    s.push('!');
    println!("{}", s);
}

الضم

صِل السلاسل النصية باستخدام العامل + أو الماكرو format!. لا يستهلك format! مدخلاته.

fn main() {
    let first = String::from("Hello");
    let second = String::from("World");
    let joined = format!("{} {}", first, second);
    println!("{}", joined);
}

استعارة String كـ &str

يمكن استعارة String تلقائيًا كـ &str. وهذا يتيح للدوال قبول أيٍّ من النوعين.

fn print_text(text: &str) {
    println!("text: {}", text);
}

fn main() {
    let owned = String::from("owned");
    print_text(&owned);
    print_text("literal");
}

لماذا نفضّل معاملات &str

تأخذ الدوال عادةً &str بدلًا من String. فهذا أكثر مرونة؛ إذ يمكن للمتصلين تمرير سلاسل مملوكة أو ثوابت نصية أو شرائح.

fn shout(s: &str) -> String {
    s.to_uppercase()
}

fn main() {
    println!("{}", shout("quiet"));
}

الطول بالبايتات

تعيد الطريقة len() الطول بوحدة البايت، وليس بعدد المحارف. يحتوي نص ASCII على بايت واحد لكل محرف.

fn main() {
    let s = "hello";
    println!("{} bytes", s.len());
}

التحقق من المحتوى

من طرق القراءة المفيدة contains وstarts_with وis_empty.

fn main() {
    let s = "hello world";
    println!("{}", s.contains("world"));
    println!("{}", s.starts_with("hello"));
}

اختلاف الملكية

يمتلك String بياناته على الكومة، ويتولى تحريرها. أما &str فيستعير بيانات موجودة فحسب ولا يمتلك شيئًا.

fn main() {
    let owned = String::from("data");
    let view: &str = &owned[0..2];
    println!("owned {} view {}", owned, view);
}

التحويل بينهما

حوّل بين النوعين:

  • من &str إلى String: باستخدام .to_string() أو String::from.
  • من String إلى &str: باستخدام &s أو s.as_str().
fn main() {
    let s = String::from("convert");
    let slice: &str = s.as_str();
    let back: String = slice.to_string();
    println!("{} {}", slice, back);
}

تحقق سريع

تذكّر الفرق بين نوعي النصوص.

مراجعة

السلاسل النصية في Rust:

  • String مملوك وقابل للنمو ومخصص على الكومة.
  • &str شريحة أو عرض مستعار، وهو النوع الذي تكون عليه الثوابت النصية.
  • أنشئه باستخدام String::from أو to_string()، وزِد حجمه باستخدام push_str.
  • فضّل &str لمعاملات الدوال.
fn main() {
    let mut msg = String::from("Rust");
    msg.push_str(" rocks");
    let view: &str = &msg;
    println!("{} ({} bytes)", view, view.len());
}

الأسئلة الشائعة

هل درس «Strings و&str» مجاني؟

نعم — نص درس «Strings و&str» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ماذا ستتعلم في «Strings و&str»؟

نصوص مملوكة ومستعارة تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟

لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «Strings و&str»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟

نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Vectors
  2. Strings و&str
  3. HashMaps
  4. التكرار على المجموعات
← العودة إلى Learn Rust Coding