// 不显示类型转换产生的溢出警告。
#![allow(overflowing_literals)]
fn main() {
    let decimal = 65.4321_f32;
    // 错误!不提供隐式转换
    let integer: u8 = decimal;
    // 改正 ^ 注释掉这一行
    // 可以显式转换
    let integer = decimal as u8;
    let character = integer as char;
    println!("Casting: {} -> {} -> {}", decimal, integer, character);
    // 当把任何类型转换为无符号类型 T 时,会不断加上或减去 (std::T::MAX + 1)
    // 直到值位于新类型 T 的范围内。
    // 1000 已经在 u16 的范围内
    println!("1000 as a u16 is: {}", 1000 as u16);
    // 1000 - 256 - 256 - 256 = 232
    // 事实上的处理方式是:从最低有效位(LSB,least significant bits)开始保留
    // 8 位,然后剩余位置,直到最高有效位(MSB,most significant bit)都被抛弃。
    // 译注:MSB 就是二进制的最高位,LSB 就是二进制的最低位,按日常书写习惯就是
    // 最左边一位和最右边一位。
    pr