类型转换

Rust 不提供原生类型之间的隐式类型转换(coercion),但可以使用 as 关键字进行显 式类型转换(casting)。

  1. // 不显示类型转换产生的溢出警告。
  2. #![allow(overflowing_literals)]
  3. fn main() {
  4. let decimal = 65.4321_f32;
  5. // 可以显式转换
  6. let integer = decimal as u8;
  7. let character = integer as char;
  8. println!("Casting: {} -> {} -> {}", decimal, integer, character);
  9. // 232 的二进制补码是 -24
  10. println!(" 232 as a i8 is : {}", 232 as i8);
  11. }

字面量

对数值字面量,只要把类型作为后缀加上去,就完成了类型说明。比如指定字面量 42 的 类型是 i32,只需要写 42i32
无后缀的数值字面量,其类型取决于怎样使用它们。如果没有限制,编译器会对整数使用 i32,对浮点数使用 f64

类型推断

类型推断引擎不仅仅是在初始化时考虑右值,还会考察变量之后如何使用来进行类型推导。

别名

可以用 type 语句给已有的类型取个新的名字。类型的名字必须遵循驼峰命名法(像是 CamelCase 这样),否则编译器将给出错误。原生类型是例外,比如: usizef32,等等。

  1. // `NanoSecond` 是 `u64` 的新名字。
  2. type NanoSecond = u64;
  3. type Inch = u64;