추론
타입 추론 엔진은 꽤 똑똑합니다. 초기화 중에 값 표현식의 타입을 살펴보는 것 이상의 일을 합니다. 또한 변수가 이후에 어떻게 사용되는지를 보고 타입을 추론합니다. 다음은 타입 추론의 심화 예시입니다:
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);
}
변수의 타입 어노테이션이 필요하지 않았습니다. 컴파일러도 만족하고 프로그래머도 행복합니다!