Avatar ·

ما الفرق بين String و str في Rust؟

مرحبًا! لقد بدأت للتو في تعلم Rust وواجهت ارتباكًا بين `String` و `str`. في لغات أخرى، مثل Python أو JavaScript، السلاسل النصية هي مجرد سلاسل، ولكن هنا نوع من التشويش. لقد كتبت هذا الكود: ```rust fn main() { let greeting = "Hello"; // هل هذا str؟ let name = String::from("World"); // وهل هذا String؟ println!("{} {}", greeting, name); // حاولت تغيير greeting // greeting.push_str("!"); // خطأ! // لكن name يمكن تغييره name.push_str("!"); // يعمل println!("{}", name); } ``` أفهم أن `String` يمكن تعديلها، بينما `str` لا يمكن. لكن لماذا؟ متى يجب استخدام كل نوع؟ وما هو `&str`؟ لقد رأيت أن الدوال غالبًا ما تكتب `&str`، لكنني لا أفهم لماذا. كما لاحظت أن `str` ليس له حجم معروف في وقت الترجمة، بينما `String` له حجم معروف. هل هذا مرتبط بتخزين السلاسل في الكومة (heap)؟ ساعدني في الفهم، فقد أصابني الصداع. <<>>

الفرق الرئيسي: في الـ

لا توجد إجابات بعد.

تسجيل الدخول لترك إجابة

المدونات