Skip to content

G.TYP.CHR.01 整数到字符的类型转换应注意有效范围

【级别】 建议

【描述】

在 Rust 中,字符类型 char 本质上是一个 Unicode 码点(标量值) ,4 个字节大小。 char 码点的有效 范围为 [0, 0xD7FF][0xE000, 0x10FFFF]

u8 类型可以直接转换为 char ,而 u32 类型转换为 char 是可能失败的。

【正例】

Rust
let c = char::from(97u8); assert_eq!(c, 'a');

let c = char::from_u32(0x110000); assert_eq!(c, Some('❤ '));

let c = char::from_u32(0xDE01); assert_eq!(c, None);