الطريقة الصحيحة لإرجاع سلسلة نصية جديدة من دالة في Rust
مرحبًا! أنا مبتدئ في Rust وأحاول فهم كيفية إرجاع السلاسل النصية من الدوال. في اللغات الأخرى، كنت ببساطة أنشئ سلسلة وأرجعها، لكن في Rust الأمر أكثر تعقيدًا بسبب نظام الملكية.
لدي دالة يجب أن تأخذ سلسلة، تضيف إليها بادئة، وتعيد سلسلة جديدة. إليك الكود الخاص بي الذي لا يعمل:
```rust
fn add_prefix(s: &str) -> &str {
let result = String::from("prefix_") + s;
&result
}
```
المترجم يعطي خطأ: `cannot return reference to local variable 'result'`. أفهم أن `result` يُحذف بعد الخروج من الدالة، ولكن كيف يمكن إرجاع سلسلة جديدة بشكل صحيح؟
لقد جربت خيارات مختلفة:
1. إرجاع `String` بدلاً من `&str` — ولكن في الكود المستدعي يجب إعادة استعارة السلسلة.
2. استخدام `to_string()` — لكن هذا يبدو زائدًا عن الحاجة.
3. حاولت إرجاع `&'static str` — لكن هذا غير مناسب للسلاسل الديناميكية.
أرشدني، ما هو النهج الاصطلاحي في Rust لإرجاع سلاسل جديدة من الدوال؟ أريد أن أفهم.