类型推断

Rust 的类型推断引擎是很聪明的,它不只是在初始化时看看右值(r-value)的 类型而已,它还会考察变量之后会怎样使用,借此推断类型。这是一个类型推导的进阶例子:

  1. fn main() {
  2. // 因为有类型说明,编译器知道 `elem` 的类型是 u8。
  3. let elem = 5u8;
  4. // 创建一个空向量(vector,即不定长的,可以增长的数组)。
  5. let mut vec = Vec::new();
  6. // 现在编译器还不知道 `vec` 的具体类型,只知道它是某种东西构成的向量(`Vec<_>`)
  7. // 在向量中插入 `elem`。
  8. vec.push(elem);
  9. // 啊哈!现在编译器知道 `vec` 是 u8 的向量了(`Vec<u8>`)。
  10. // 试一试 ^ 注释掉 `vec.push(elem)` 这一行。
  11. println!("{:?}", vec);
  12. }

没有必要写类型说明,编译器和程序员皆大欢喜!