Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Текстовые типы

Типы char и str содержат текстовые данные.

Значение типа char - это скалярное значение Юникода (т.е. кодовая точка, которая не является суррогатом), представленное как 32-битное беззнаковое слово в диапазоне от 0x0000 до 0xD7FF или от 0xE000 до 0x10FFFF.

Немедленное неопределенное поведение - создание char, который выходит за пределы этого диапазона. [char] фактически является строкой UCS-4 / UTF-32 длиной 1.

Значение типа str представлено так же, как [u8], срез 8-битных беззнаковых байтов. Однако стандартная библиотека Rust делает дополнительные предположения о str: методы, работающие с str, предполагают и гарантируют, что данные там являются допустимыми UTF-8. Вызов метода str с буфером не в UTF-8 может вызвать неопределенное поведение сейчас или в будущем.

Поскольку str является динамически sized типом, он может быть создан только через тип указателя, такой как &str. Расположение &str такое же, как расположение &[u8].

Расположение и валидность битов

char гарантированно имеет тот же размер и выравнивание, что и u32 на всех платформах.

Каждый байт char гарантированно инициализирован (другими словами, transmute::<char, [u8; size_of::<char>()]>(...) всегда безопасен — но поскольку некоторые битовые шаблоны являются недопустимыми для char, обратное не всегда безопасно).