文本类型

charstr 类型用于存储文本数据。

char 类型的值是一个 Unicode 标量值 (即,一个非代理码位的码位),表示为 32 位无符号字,范围为 0x0000 到 0xD7FF 或 0xE000 到 0x10FFFF。

创建一个超出此范围的 char 会立即导致 未定义行为。一个 [char] 实际上是一个长度为 1 的 UCS-4 / UTF-32 字符串。

str 类型的值与 [u8] (8 位无符号字节切片)的表示方式相同。然而,Rust 标准库对 str 做了额外的假设:作用于 str 的方法假设并确保其中的数据是有效的 UTF-8。使用非 UTF-8 缓冲区调用 str 方法可能会导致 未定义行为,无论现在还是将来。

由于 str 是一个 动态大小类型,它只能通过指针类型实例化,例如 &str

布局和位有效性

在所有平台上,char 保证具有与 u32 相同的大小和对齐方式。

char 的每个字节都保证被初始化(换句话说,transmute::<char, [u8; size_of::<char>()]>(...) 总是安全的——但由于某些位模式是无效的 char,反之则不总是安全的)。