文本类型
char 和 str 类型保存文本数据。
char 类型的值是一个 Unicode 标量值 (即不是代理对(surrogate)的码位),表示为 0x0000 到 0xD7FF 或 0xE000 到 0x10FFFF 范围内的 32 位无符号字。
创建一个超出此范围的 char 会立即导致 未定义行为 。 [char] 实际上是一个长度为 1 的 UCS-4 / UTF-32 字符串。
str 类型的值的表示方式与 [u8] 相同,即 8 位无符号字节的切片。然而,Rust 标准库对 str 做了额外的假设:在 str 上操作的方法假定并确保其中的数据是有效的 UTF-8。使用非 UTF-8 缓冲区调用 str 方法可能会在现在或将来导致 未定义行为 。
由于 str 是 动态大小类型 ,它只能通过指针类型实例化,例如 &str 。 &str 的布局与 &[u8] 的布局相同。
布局和位有效性
char 在所有平台上保证具有与 u32 相同的大小和对齐。
char 的每个字节都保证被初始化(换句话说, transmute::<char, [u8; size_of::<char>()]>(...) 总是健全的——但由于某些位模式是无效的 char ,反向操作并不总是健全的)。