类型推断
Rust 的类型推断引擎是很聪明的,它不只是在初始化时看看右值(r-value)的 类型而已,它还会考察变量之后会怎样使用,借此推断类型。这是一个类型推导的进阶例子:
fn main() { // 因为有类型说明,编译器知道 `elem` 的类型是 u8。 let elem = 5u8; // 创建一个空向量(vector,即不定长的,可以增长的数组)。 let mut vec = Vec::new(); // 现在编译器还不知道 `vec` 的具体类型,只知道它是某种东西构成的向量(`Vec<_>`) // 在向量中插入 `elem`。 vec.push(elem); // 啊哈!现在编译器知道 `vec` 是 u8 的向量了(`Vec<u8>`)。 // 试一试 ^ 注释掉 `vec.push(elem)` 这一行。 println!("{:?}", vec); }
没有必要写类型说明,编译器和程序员皆大欢喜!