r[type.char]

Character type

r[type.char.intro] The char type represents a single Unicode scalar value (i.e., a code point that is not a surrogate).

[!EXAMPLE]

let c: char = 'a';
let emoji: char = '😀';
let unicode: char = '\u{1F600}';

[!NOTE] See [the standard library docs][char] for information on the impls of the char type.

r[type.char.value] A value of type char is represented as a 32-bit unsigned word in the 0x0000 to 0xD7FF or 0xE000 to 0x10FFFF range. It is immediate undefined behavior to create a char that falls outside this range.

r[type.char.layout] char is guaranteed to have the same size and alignment as u32 on all platforms.

r[type.char.validity] Every byte of a char is guaranteed to be initialized. In other words, transmute::<char, [u8; size_of::<char>()]>(...) is always sound -- but since some bit patterns are invalid chars, the inverse is not always sound.