Avatar ·

كيفية تحويل String و &str و Vec<u8> و &[u8] إلى بعضها البعض في Rust؟

مرحباً بالجميع! لقد بدأت مؤخراً في تعلم Rust وأواجه دائماً ارتباكاً في التحويلات بين السلاسل والمصفوفات البايتية. المشكلة تنشأ بسبب وجود أنواع مختلفة للسلاسل في Rust: String، &str، والبايتات: Vec<u8> و &[u8].

على سبيل المثال، أكتب برنامجاً بسيطاً يقرأ ملفاً، ويعالج السلاسل، ثم يطبع النتيجة. لكنني أتلقى دائماً أخطاء في الترجمة لأنني لا أستطيع فهم كيفية تحويل نوع إلى آخر بشكل صحيح.

use std::fs;

fn main() {
    let data: Vec<u8> = fs::read("example.txt").unwrap();
    // كيف نحول Vec<u8> إلى String؟
    let text: String = ???;
    
    // ثم أحتاج إلى تمرير جزء من السلسلة إلى دالة تقبل &str
    process_part(&text);
    
    // ثم أحتاج مرة أخرى إلى تحويل النتيجة إلى Vec<u8> للكتابة في ملف
    let output: Vec<u8> = ???;
    fs::write("output.txt", ou