타입 추론

타입 추론 엔진은 꽤 영리합니다. 초기화 시 표현식 값의 타입을 알아내는 것을 넘어, 변수가 이후에 어떻게 사용되는지까지 지켜보고 타입을 추론하죠. 다음은 타입 추론의 심화 예시입니다.

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);
}

변수에 타입 어노테이션을 작성하지 않고도 컴파일 문제가 발생하지 않으면, 프로그래머에게는 행복한 일이죠!