Почему я не могу разыграть `u32` в` char`?

Я пытаюсь выучить Rust, и я поймал себя на мысли, какchars 4 байта в ширину. Я могу броситьchar кu32 и это работает (они оба 4 байта в ширину), однако, когда я бросаю изu32 кcharРуст жалуется:

fn main() {
    let pizza_hex: u32 = 0x1f355;
    let pizza: char = ''; // (pizza char: http://www.fileformat.info/info/unicode/char/1f355/index.htm)

    // pizza as hex = 1f355
    println!("pizza as hex = {:x}", pizza as u32);

    // size of pizza = 4
    println!("size of pizza = {}", std::mem::size_of_val(&pizza));

    // This doesn't work super well
    println!("{} == {}", pizza_hex as char, pizza);
}
error[E0604]: only `u8` can be cast as `char`, not `u32`
  --> src/main.rs:12:26
   |
12 |     println!("{} == {}", pizza_hex as char, pizza);
   |                          ^^^^^^^^^^^^^^^^^

Есть идеи почему?

Ответы на вопрос(1)

Ваш ответ на вопрос