5.2 Inference
타입 추측 엔진은 매우 똑똑하다. 이는 초기화 때 r-value를 참고하는 것 이상이다. 그 뿐 아니라 타입 추측 이후에 변수가 어떻게 사용되는지도 참고한다. 여기 타입 추측의 고급 예제가 있다:
fn main() { // 주해가 달려, 컴파일러는 `elem`이 u8 타입임을 알았다. let elem = 5u8; // 비어있는 벡터를 생성한다. (확장 가능한 배열). let mut vec = Vec::new(); // 이 시점에 컴파일러는 벡터의 정확한 타입을 알지 못하고 // 그저 어떤 것들의 벡터라고만 알고 있다. (`Vec<_>`). // `elem`를 벡터에 추가한다. vec.push(elem); // 아하! 이제 컴파일러는 `vec` 가 `u8`s의 벡터임을 알았다. (`Vec<u8>`) // TODO ^ 해당 줄 `vec.push(elem)` 를 주석처리 해보세요. println!("{:?}", vec); }
변수의 타입 주해가 필요하지 않을 때, 컴파일러는 행복하고 프로그래머도 그렇다!