Avatar ·

ماذا يعني العامل r#""# في Rust لسلاسل النصوص الحرفية؟

مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في تعلم Rust وواجهت بناء جملة غير مفهوم تمامًا بالنسبة لي. في أحد المشاريع، رأيت الكود التالي: ```rust let json = r#"{"name": "John", "age": 30}"#; let path = r"C:\\Program Files\\MyApp"; let regex = r"\\d{3}-\\d{2}-\\d{4}"; ``` أفهم أن `r` قبل السلسلة يعني raw string literal (سلسلة نصية خام) لا تعالج تسلسلات الهروب. لكن ماذا يعني `r#""#`؟ لماذا نحتاج إلى علامات الشباك `#` حول علامات الاقتباس؟ ولماذا قد يكون هناك عدة منها، مثل `r##"..."##`؟ حاولت استبدال `r#"..."#` بـ `r"..."` العادية، لكن المترجم أظهر خطأ. في الوثائق الرسمية، وجدت إشارة إلى أن هذا مرتبط بهروب علامات الاقتباس داخل السلسلة، لكن الأمثلة كانت قليلة. ما يهمني تحديدًا: 1. كيف يعمل `r#""#` وما الفرق بينه وبين `r""`؟ 2. لماذا قد نحتاج إلى عدة علامات شباك، مثل `r###"..."###`؟ 3. هل هناك بدائل لهذا البناء؟ سأكون ممتنًا لشرح مفصل مع أمثلة.