BorrowCheck › Ядро языка Rust

Строки и текст

String и &str, UTF-8 и индексация, символы/байты/графемы, форматирование, строки ОС и C.

Тема объясняет, как в Rust устроен текст: владеющая строка String и строковый срез &str, оба хранящие байты в кодировке UTF-8. Вопросы проверяют, где нужен каждый из этих типов: почему параметр &str принимает &String через приведение (deref coercion), почему оператор + перемещает левый операнд, какой тип у байтового литерала b"hi" и как parse опирается на трейт FromStr. Раздел о UTF-8 разбирает, почему строку нельзя индексировать целым числом, что возвращает len, когда срез по байтовым границам вызывает панику и как метод get возвращает None вместо неё. Отдельно различаются байты, скалярные значения char и графемы: комбинируемый знак считается самостоятельным символом, а смена регистра может изменить число символов. Раздел о форматировании охватывает трейты Display и Debug, спецификаторы ширины, точности и знака, захват переменных в строке формата и запись в String через write!. Последний раздел посвящён строкам на границе с операционной системой и C: OsStr, который не обязан быть корректным UTF-8, CString с запретом внутреннего нулевого байта, литералы c"..." и Path, сравнивающий пути по компонентам.

39 вопросов: базовый уровень — 21, средний — 14, углублённый — 4. 5 справок, 20 источников.

Разделы

  1. String и &str
  2. UTF-8 и индексация
  3. Символы, байты, графемы
  4. Форматирование, Display / Debug
  5. OsString, CString, Path

Предыдущая тема: Структуры, перечисления, сопоставление · Следующая тема: Трейты, обобщения, dyn / impl