رشته‌ها

حالا می‌توانیم دو نوع رشته‌ای را در راست درک کنیم:

  • str& تکه‌ای از بایت‌های رمزگذاری‌شده UTF-8، شبیه به [u8]& است.
  • String is an owned buffer of UTF-8 encoded bytes, similar to Vec<T>.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 10 minutes.

&str یک برش رشته‌ای را معرفی می‌کند، که یک مرجع غیرقابل تغییر به داده‌های رشته‌ای رمزشده UTF-8 است که در یک بلوک حافظه ذخیره شده است. لیترال های رشته‌ای String (”Hello”) در باینری برنامه ذخیره می‌شوند.

  • در راست نوع ‍ String یک wrapper بر روی یک بردار از بایت‌هاست. مانند Vec<T>، یک نوع Owned است.

  • مانند بسیاری از انواع دیگر، String::from() یک رشته از یک لیترال رشته ایجاد می‌کند. String::new() که رشته خالی جدید ایجاد می‌کند که داده های رشته‌ای می‌توانند با استفاده از متدهای push() و push_str() به آن اضافه شوند.

  • ماکرو format!() یک راه راحت برای ایجاد یک رشته Owned از مقادیر پویا است. مثل فرمت قابل پذیرش توسط ماکرو println!() است.

  • می‌توانید برش‌های &str را از String از طریق & و انتخابی محدوده انتخاب کنید. اگر محدوده بایتی را انتخاب کنید که با مرزهای نویسه تراز نباشد، عبارت وحشت می کند. تکرار کننده chars روی کاراکترها تکرار می شود و بر تلاش برای درست کردن مرزهای کاراکتر ترجیح داده می شود.

  • برای برنامه‌نویسان C++: &strرا به عنوان const char* در C++ درنظر بگیرید، اما یک فرق مهم این است که در راست که همیشه به یک رشته معتبر در حافظه اشاره می کند. راست نوع Stringمعادل تقریبی std::string در C++ است (با این تفاوت که فقط می‌تواند حاوی بایت‌های رمزشده UTF-8 باشد و هرگز از بهینه‌سازی Small-String استفاده نمی کند).

  • رشته‌های بایت به شما امکان می‌دهند مستقیماً یک مقدار &[u8] ایجاد کنید:

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • رشته‌های خام به شما امکان می دهند یک مقدار &str با غیرفعال کردن فرارها ایجاد کنید: r"\n" == "\\n".شما می‌توانید با استفاده از تعداد برابر # در دو طرف دابل‌کوت دابل‌کوت‌ها، دابل‌کوت‌ها را جاسازی کنید:

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX