类型推断
类型推断引擎相当智能。它不仅在初始化时分析值表达式的类型,还会根据变量后续的使用方式来推断其类型。下面是一个类型推断的高级示例:
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); }
无需为变量添加类型注解,编译器和程序员都很满意!