类型推断
类型推断引擎相当智能。它不仅在初始化时分析值表达式的类型,还会根据变量后续的使用方式来推断其类型。下面是一个类型推断的高级示例:
fn main() {
// 通过类型注解,编译器得知 `elem` 的类型为 u8
let elem = 5u8;
// 创建一个空向量(可增长的数组)
let mut vec = Vec::new();
// 此时编译器还不知道 `vec` 的具体类型,
// 只知道它是某种类型的向量(`Vec<_>`)。
// 将 `elem` 插入向量中
vec.push(elem);
// 啊哈!现在编译器知道 `vec` 是 `u8` 类型的向量(`Vec<u8>`)
// TODO ^ 尝试注释掉 `vec.push(elem)` 这一行
println!("{:?}", vec);
}
无需为变量添加类型注解,编译器和程序员都很满意!