03-类型推断
类型推断 — Rust By Example
译文 · 基于 Rust By Example
原文链接: https://doc.rust-lang.org/stable/rust-by-example/types/inference.html
类型推断
Rust 的类型推断引擎是很聪明的,它不只是在初始化时看看右值(r-value)的类型而已,它还会考察变量之后会怎样使用,借此推断类型。这是一个类型推导的进阶例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 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);//[5]
}
|
没有必要写类型说明,编译器和程序员皆大欢喜!